Herausfinden ob Prozess läuft

Diskutiere mit über: Herausfinden ob Prozess läuft im Mac OS X Entwickler, Programmierer Forum

  1. mvarlik

    mvarlik Thread Starter MacUser Mitglied

    Beiträge:
    51
    Zustimmungen:
    0
    Registriert seit:
    27.06.2005
    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;
    }
    }
     
  2. dannycool

    dannycool MacUser Mitglied

    Beiträge:
    1.485
    Zustimmungen:
    34
    Registriert seit:
    02.02.2005
  3. hns

    hns MacUser Mitglied

    Beiträge:
    294
    Zustimmungen:
    6
    Registriert seit:
    16.09.2004
    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

    below MacUser Mitglied

    Beiträge:
    13.882
    Zustimmungen:
    1.086
    Registriert seit:
    15.03.2004
    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
     
  5. FlashIT

    FlashIT MacUser Mitglied

    Beiträge:
    60
    Zustimmungen:
    2
    Registriert seit:
    02.06.2005
    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"
     
  6. mvarlik

    mvarlik Thread Starter MacUser Mitglied

    Beiträge:
    51
    Zustimmungen:
    0
    Registriert seit:
    27.06.2005
    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
     
Die Seite wird geladen...
Ähnliche Themen - Herausfinden Prozess läuft Forum Datum
Apache läuft nicht ;) Mac OS X Entwickler, Programmierer 19.10.2016
MySQL Datenbankserver läuft nicht Mac OS X Entwickler, Programmierer 02.01.2016
Zombie Prozess erzeugen Mac OS X Entwickler, Programmierer 26.08.2008
Prozess freundlich beenden Mac OS X Entwickler, Programmierer 03.08.2008
SVN: Lock Author herausfinden Mac OS X Entwickler, Programmierer 14.01.2008

Diese Seite empfehlen

Benutzerdefinierte Suche