Best way to prevent zombie processes

Grant Edwards invalid at invalid.invalid
Mon Jun 1 10:59:30 EDT 2015


On 2015-05-31, Marko Rauhamaa <marko at pacujo.net> wrote:
> Cecil Westerhof <Cecil at decebal.nl>:
>
>> At the moment I have the following code:
>>     os.chdir(directory)
>>     for document in documents:
>>         subprocess.Popen(['evince', document])
>>
>> With this I can open several documents at once. But there is no way to
>> know when those documents are going to be closed. This could/will lead
>> to zombie processes. (I run it on Linux.) What is the best solution to
>> circumvent this?
>>
>> I was thinking about putting all Popen instances in a list. And then
>> every five minutes walk through the list and check with poll if the
>> process has terminated. If it has it can be released from the list.
>> Of-course I need to synchronise those events. Is that a good way to do
>> it?
>
> If you don't care to know when child processes exit, you can simply
> ignore the SIGCHLD signal:
>
>     import signal
>     signal.signal(signal.SIGCHLD, signal.SIG_IGN)
>
> That will prevent zombies from appearing.

Bravo!  I've been writing Unix apps for 30 years, and I did not know
that.  Is this something recent[1], or have I somehow managed to avoid
this useful bit of info for that long?

[1] "Recent" of course being rather subjective and highly
     age-dependent.

-- 
Grant Edwards               grant.b.edwards        Yow! How's it going in
                                  at               those MODULAR LOVE UNITS??
                              gmail.com            



More information about the Python-list mailing list