use POSIX qw( WNOHANG ); # Returns false if alive. # Returns true if dead. (Reaps and sets $?) # Throws expection on error. (Sets $!) sub is_child_dead { my ($pid) = @_; my $rv = waitpid($pid, WNOHANG); die("waitpid: $!\n") if $rv == -1; return $rv; }