App-ptimeout

 view release on metacpan or  search on metacpan

lib/App/ptimeout.pm  view on Meta::CPAN

        my $waited = waitpid($pid, WNOHANG);
        if($waited == $pid) {   # yes, and it exited
            $child_status = $?;
            last;
        }
        if($waited == -1) {     # it's all gone wrong
            die("Error waiting for child process\n");
        }

        if(time >= $deadline) { # still running, but been running too long
            # looks like dpulicate code, but it avoids a race condition
            $waited = waitpid($pid, WNOHANG);
            if($waited == $pid) {
                $child_status = $?;
                last;
            }
            warn "timed out\n";
            $timed_out = 1;
            $child_status = _terminate_process_tree($pid);
            last;
        }



( run in 1.619 second using v1.01-cache-2.11-cpan-39bf76dae61 )