[Tutor] Handling SIGCHLD signal to kill zombie processes

John P Speno speno at isc.upenn.edu
Wed Dec 3 18:58:51 EST 2003


On Wed, Dec 03, 2003 at 07:02:27PM -0000, rafael.sousa wrote:
> 
> Hi!
> 
> I need to know what to write in a function that handles the SIGCHLD signal, in order to kill zombie processes that are left running.
> 
> -> In C ANSI, what I do is start by specifying what function is going to handle the signal:
> 
> signal(SIGCHLD, handleSIGCHLD);
> 
> and then one handler that does the trick is:
> 
> void handleSIGCHLD() {
>    int stat;
> 
>    /*Kills all the zombie processes*/
>    while(waitpid(-1, &stat, WNOHANG) > 0);
> }
> 
> -> In Python, specifying the handler is easy:
> 
> import signal
> signal.signal(signal.SIGCHLD, handleSIGCHLD)
> 
> What I don't know how to do is an equivalent to the C function above...

How much help do you need?

If you are looking for python's version of waitpid, you can find it in the
os module:

import os

def handleSIGCHLD():
    os.waitpid(-1, os.WNOHANG)

On some unixes, you don't have to reap children if you ignore SIGCHLD.

signal.signal(signal.SIGCHLD, signal.SIG_IGN)



More information about the Tutor mailing list