Monitor Process in Python?

Zac Brown picture Zac Brown · Jul 9, 2010 · Viewed 16.4k times · Source

I think this is a pretty basic question, but here it is anyway.

I need to write a python script that checks to make sure a process, say notepad.exe, is running. If the process is running, do nothing. If it is not, start it. How would this be done.

I am using Python 2.6 on Windows XP

Answer

JAB picture JAB · Jul 9, 2010

The process creation functions of the os module are apparently deprecated in Python 2.6 and later, with the subprocess module being the module of choice now, so...

if 'notepad.exe' not in subprocess.Popen('tasklist', stdout=subprocess.PIPE).communicate()[0]:
    subprocess.Popen('notepad.exe')

Note that in Python 3, the string being checked will need to be a bytes object, so it'd be

if b'notepad.exe' not in [blah]:
    subprocess.Popen('notepad.exe')

(The name of the file/process to start does not need to be a bytes object.)