if( my $pid = fork() ){ print "parent ($$) is waiting on child $pid\n"; my $kid ; do { $kid = waitpid(-1, WNOHANG); } while $kid > 0; my $exit = $? >> 8; die qq{Kid ($kid) exited with $? / $exit \n}; } else { print "I am the kid $$\n"; sleep 1; #~ exit 666; ## too big exit 12; } __END__ parent (1724) is waiting on child -880 I am the kid -880 Kid (-880) exited with 3072 / 12