Avoiding defunct processes

Chris Angelico rosuav at gmail.com
Fri Nov 2 03:36:40 CET 2012


On Fri, Nov 2, 2012 at 1:16 PM, Richard <richardbp at gmail.com> wrote:
> Hello,
>
> I create child processes with subprocess.Popen().
> Then I either wait for them to finish or kill them.
> Either way these processes end up as defunct until the parent process
> completes:
> $ ps e
> 6851 pts/5    Z+     1:29 [python] <defunct>
>
> This confuses another library as to whether the processes are
> complete.
> For now I detect which processes are defunct by parsing the output of
> "ps".
> What would you recommend? I am hoping there is a cleaner way.

That's a zombie process, it's finished but the parent hasn't wait()ed
for it yet.

http://docs.python.org/3.3/library/subprocess.html#subprocess.Popen.wait

Once the process has ended, call that to get its return value and
clean everything up.

ChrisA


More information about the Python-list mailing list