Herausfinden ob Prozess läuft

  1. mvarlik

    mvarlik Thread StarterMacUser Mitglied

    Mitglied seit:
    27.06.2005
    Beiträge:
    51
    Zustimmungen:
    0
    Hallo,

    ich möchte auch einem Cocoa Programm heraus testen, ob ein bestimmter Prozess (ich kenne nur den Namen, nicht die PID) läuft. Ich habe dazu versucht, mit einer Pipe nach "ps x" in dessen Ausgabe nach dem Prozessnamen zu suchen (siehe Codefragment unten). Leider zeigt der besagte Code ein merkwürdiges Verhalten: wird er "ganz normal" mit dem gcc übersetzt funktioniert alles prima, füge ich den Code jedoch in ein Cocoa Projekt ein, dann werden immer nur 80 Zeichen von jeder Zeile des ps -Befehls gelesen. Kann sich/mir das jemand erklären? Gibt es vielleicht sogar eine bessere Möglichkeit um nach dem Vorhandensein eines Prozesses zu testen?

    MfG
    Michael

    *******Der Code*******
    bool isRunning() {
    FILE *ps, *outf;
    char buff[256];

    if((ps=popen("/bin/ps x", "r")) == NULL) {
    printf("Error\n");
    pclose(ps);
    return NO;
    }
    else
    {
    while(fgets(buff, 256, ps))
    {
    if(strstr(buff, "PROZESSNAME") != NULL)
    {
    pclose(ps);
    return YES;
    }

    }
    pclose(ps);
    return NO;
    }
    }
     
    mvarlik, 09.08.2005
  2. dannycool

    dannycoolMacUser Mitglied

    Mitglied seit:
    02.02.2005
    Beiträge:
    1.489
    Zustimmungen:
    34
    dannycool, 09.08.2005
  3. hns

    hnsMacUser Mitglied

    Mitglied seit:
    16.09.2004
    Beiträge:
    294
    Zustimmungen:
    6
    ps versucht anscheinend herauszufinden wie groß das Terminalfenster ist auf dem es ausgibt. Und mit popen() gibt es gar keines, so dass es die Standardgröße 80 annimmt. Wie man das ändert: ?
    Evtl. mit setenv("COLUMNS=240");

    -- hns
     
  4. below

    belowMacUser Mitglied

    Mitglied seit:
    15.03.2004
    Beiträge:
    13.289
    Zustimmungen:
    1.086
    Der sysctl Ansatz ist der bessere. Das Funktioniert aber nur mit einem weitern Schritt für CFM Applicationen. Tip: top source code lesen, ist nicht schwer.

    Gruss

    Alex
     
    below, 10.08.2005
  5. FlashIT

    FlashITMacUser Mitglied

    Mitglied seit:
    02.06.2005
    Beiträge:
    60
    Zustimmungen:
    2
    nutz evtl. mal die Option "w" beim ps...
    also "ps awwwww" um nix abschneidenzulassen, da es ja wie oben beschrieben eigentlich eine 0er-Shell annimmt und ps dann "abschneidet"
     
    FlashIT, 10.08.2005
  6. mvarlik

    mvarlik Thread StarterMacUser Mitglied

    Mitglied seit:
    27.06.2005
    Beiträge:
    51
    Zustimmungen:
    0
    Hallo,

    danke für eure Hinweise. Die ps Option "w" funktioniert, aber die sysctl Variante scheint mir dennoch die bessere Wahl zu sein.

    MfG
    Michael
     
    mvarlik, 10.08.2005
Die Seite wird geladen...
Ähnliche Themen - Herausfinden Prozess läuft
  1. heinetz
    Antworten:
    12
    Aufrufe:
    1.112
    heinetz
    15.12.2016
  2. traue niemandem
    Antworten:
    2
    Aufrufe:
    1.189
  3. pimpone
    Antworten:
    7
    Aufrufe:
    1.949
    anegmawad
    28.08.2008
  4. Nikolas
    Antworten:
    5
    Aufrufe:
    631
    Nikolas
    03.08.2008
  5. timoken
    Antworten:
    1
    Aufrufe:
    1.741