or die "fork: $!";
if($pid) # parent
{
- local $SIG{ALRM} = sub { kill $pid; };
+ local $SIG{ALRM} = sub { warn "SIGALRM caught\n"; kill TERM => $pid; };
alarm $timeout
if $timeout;
- if(waitpid $pid, 0 != $pid)
+ if(waitpid($pid, 0) != $pid)
{
die "waitpid: did not return our child process $pid: $!";
}
- return !$?;
+ alarm 0;
+ return ($? == 0);
}
else # child
{