[Python-de] feststellen ob ein prozess läuft

Ulrich Berning ulrich.berning at denviso.de
Fr Dez 21 11:30:03 UTC 2007


robert rottermann wrote:

> Hallo,
>
> ich möchte feststellen, ob ein prozess noch läuft, von dem id die
> pzess-id kenne.
>
> z.Z. mache ich das so, dass ich mir mit ps alle prozesse ausgeben
> lasse, und dann scanne.
>
> gibt es da eine einfachere bzw bessere methode?
>
> danke für hinweise

Wie wär's hiermit:

------------
import os, signal, errno

def processIsAlive(pid):
    try:
        os.kill(pid, signal.SIG_DFL)  # Check existence of pid
    except os.error, args:
        if args.errno == errno.ESRCH: # No such process
            return False
        raise                         # Any other error
    return True

if __name__ == '__main__':
    print processIsAlive(os.getpid())
    print processIsAlive(22222222)
------------
Geht natürlich nur auf Linux/UNIX, ist aber der offizielle Weg (siehe 
Manual Page von kill()).

Ulli