our $pid; # remember the child's pid our $status; sub handle_sigchld { my $wpid = waitpid -1, WNOHANG; # use POSIX for WNOHANG if ($wpid == $pid) { $status = $?; } } ... $pid = open(INPIPE, "...|");