Anzeige:
Ergebnis 1 bis 7 von 7

Thema: Ueberpruefen ob ein Prozess laeuft.

  1. #1
    Registrierter Benutzer
    Registriert seit
    23.08.2004
    Beiträge
    24

    Ueberpruefen ob ein Prozess laeuft.

    Ich brauche eine Loesung mit der ich herausbekomme ob ein bestimmter Prozess laeuft oder nicht in C. Ich hatte urspruenglich gehofft das eine einfache Loesung ueber eine POSIX Funktion o.ae. vorhanden waere, habe aber bisher nichts derartiges gefunden. Eine Loesung waere, einfach pidof aufzurufen
    PHP-Code:
    if(system("pidof bla >/dev/null")) { blub 
    Ansonsten koennte man halt noch das /proc Filesystem durcharbeiten und nach dem Prozess suchen, was aber sicher nicht ganz einfach portabel programmiert werden kann.

    Die Sache ist halt dass dieser Check periodisch durchgefuehrt wird, und deshalb Aufrufe von externen Programmen wie pidof vermieden werden sollten. Vielleicht kennt jemand eine bessere Methode? Und wenn nur das Parsen der Informationen im proc Filesystem in Frage kommt, gibt es vielleicht irgendwo schon eine Musterloesung? (ich habe mir mal den sourcecode von pidof angeschaut, aber der ist mit dem von killall verstrickt und generell sehr komplex)

    thx
    Don't say things that hurt others, said pussycat.

  2. #2
    Registrierter Benutzer
    Registriert seit
    22.03.2001
    Beiträge
    650
    Ich mache sowas mit einem Shell-Skript:

    Beispiel mit foo2

    Code:
    while ( true ); do
      if [ -z "`ps ax | awk '{print $5}' | egrep "(^|/)foo2"`" ];
      then
            (läuft nicht mehr, tu was)
      fi
    # avoid busy waiting
    sleep 1
    done

  3. #3
    Registrierter Benutzer
    Registriert seit
    23.08.2004
    Beiträge
    24
    hmm, das hilft mir natuerlich nicht, das ist ja nochmal ein gutes stueckchen langsamer als meine variante
    Don't say things that hurt others, said pussycat.

  4. #4
    Registrierter Benutzer
    Registriert seit
    22.03.2001
    Beiträge
    650
    Das Beispiel ist ja eine Endlos-Schleife; die dauert etwas länger ...

    Du brauchst davon nur die if-Zeile mit then- und else-Zweig (ohne sleep).

  5. #5
    Registrierter Benutzer
    Registriert seit
    23.08.2004
    Beiträge
    24
    schon klar, trotzdem ist es einfacher pidof aufzurufen als einen ps awk grep kontrukt auszufuehren
    Don't say things that hurt others, said pussycat.

  6. #6
    Registrierter Benutzer
    Registriert seit
    05.09.2002
    Ort
    Neuhausen
    Beiträge
    320
    Verwende dafür kill(pid, 0) und überprüfe den Return-Werte auf 0. Siehe auch Unix Programming FAQ.

    Gruss, Andy

  7. #7
    Registrierter Benutzer
    Registriert seit
    23.08.2004
    Beiträge
    24
    Das Problem ist nur, dass ich die PID nicht habe, sondern nur den Befehl, und da sacht mir die FAQ "You really don't want to do this."

    Also werde ich wohl bei meiner Version bleiben. Danke trotzdem
    Don't say things that hurt others, said pussycat.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •