our $Kid_Status; use POSIX ":sys_wait_h"; sub REAPER { my $child; while (($child = waitpid(-1,WNOHANG)) > 0) { $Kid_Status = $?; } $SIG{CHLD} = \&REAPER; # still loathe sysV } $SIG{CHLD} = \&REAPER; # do something that forks... if (fork()) { sleep 5; $Kid_Status >>= 8; print "$Kid_Status\n"; } else { exit 43; }