$SIG{'CHLD'} = \&REAPER; sub REAPER { 1 until (waitpid(-1,WNOHANG) == -1); #Loop in case we have #multiple children $SIG{'CHLD'} = \&REAPER; #reinstall the signal #handler }