Probably the easiest and simplest way to handle prevent zombies
is to install the IGNORE signal handler for SIGCHLD messages.
Simply add the following line near the top of your program:
$SIG{CHLD}='IGNORE';
This assumes that your main program doesn't need to do
anything when the children complete. If it does you will
need a more complicated SIGCHLD handler.
The following is a very standard
SIGCHLD handler:
$SIG{CHLD}=\&REAPER;
sub REAPER{
my $stiff;
while(($stiff = waitpid(-1,&WNOHANG))>0){
# do something with $stiff if you want
}
$SIG{CHLD}=\&REAPER;
}
|