sub reap_child { while ( (my $child = waitpid(-1,WHNOHANG)) > 0) { $CHILDREN{$child}->($child) if ref $CHILDREN{$child} eq 'CODE'; delete $CHILDREN{$child}; } } #### sub kill_children { kill TERM => keys %CHILDREN; sleep while %CHILDREN; }