Mercurial > hg > config
changeset 180:f52486ceadee
handle defunct processes
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Tue, 08 Nov 2011 17:11:35 -0800 |
parents | a5061b41a781 |
children | 7f594703d75e |
files | python/process.py |
diffstat | 1 files changed, 12 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/python/process.py Tue Nov 08 15:36:55 2011 -0800 +++ b/python/process.py Tue Nov 08 17:11:35 2011 -0800 @@ -4,6 +4,11 @@ import sys def ps(arg='axwww'): + """ + python front-end to `ps` + http://en.wikipedia.org/wiki/Ps_%28Unix%29 + returns a list of process dicts based on the `ps` header + """ retval = [] process = subprocess.Popen(['ps', arg], stdout=subprocess.PIPE) stdout, _ = process.communicate() @@ -19,17 +24,22 @@ retval.append(process_dict) return retval -def running_processes(name): +def running_processes(name, defunct=True): """ returns a list of {'PID': PID of process (int) 'command': command line of process (list)} - with the executable named `name` + with the executable named `name`. + - defunct: whether to return defunct processes """ retval = [] for process in ps(): command = process['COMMAND'] command = shlex.split(command) + if command[-1] == '<defunct>': + command = command[:-1] + if not command or not defunct: + continue prog = command[0] basename = os.path.basename(prog) if basename == name: