sub REAPER { $waitedpid = wait; print "GOT PID: $waitedpid\n"; $SIG{CHLD} = \&REAPER; } $SIG{CHLD} = \&REAPER; while(1){ my $i=0; print scalar localtime(time()), "\n"; for(;$i<10;$i++){ print "Looping $i ($$) ...\n"; if( $i == 5 ){ if( ! defined($pid = fork) ){ print "Danger danger Will Robinson!\n"; } unless( $pid ){ print "I am child $$ [$pid]\n"; exit 0; } } } sleep 5; }