#!/usr/bin/perl sub nanny { print "ENTER\n"; while ((my $cpid = waitpid(-1, WNOHANG)) > 0) { print "$cpid exited\n"; } $SIG{CHLD} = \&nanny; print "EXIT\n"; } $SIG{CHLD} = \&nanny; my $c1 = open (C1, "-|"); if ($c1 == 0) { exec("sleep 2"); die $!; } elsif (!defined $c1) { die "Failed: $!\n"; } my $c2 = open (C2, "-|"); if ($c2 == 0) { exec("sleep 7"); die $!; } elsif (!defined $c2) { die "Failed: $!\n"; } my $c3 = open (C3, "-|"); if ($c3 == 0) { exec("sleep 10"); die $!; } elsif (!defined $c3) { die "Failed: $!\n"; } sleep 20; print "DONE\n"; #### ENTER 13173 exited 13174 exited 13175 exited EXIT DONE ENTER EXIT