hotshot has asked for the wisdom of the Perl Monks concerning the following question:
Hello all!
I doing something as follows to run an external script with timeout on it + catching it's STDOUT:
The question is how can I get the exit status of the script if it was finished before reached timeout.
Thanks
I doing something as follows to run an external script with timeout on it + catching it's STDOUT:
That's working fine.eval { alarm($timeout); pipe(READ,WRITE); if ($pid = fork) { $SIG{CHLD} = sub { 1 while (waitpid(-1, WNOHANG)) > 0}; close(WRITE); } else { die "Cannot fork: $!" unless defined $pid; open(STDOUT, ">&=WRITE") or die "Cannot redirect STDOUT: $!"; close(READ); exec ("$extScript") or die "Cannot exec $extScript: $!"; } while(<READ>) { push(@output, $_); } close(READ); alarm(0); }; ## End eval if ($@) { if ($@ =~ /Timeout/) { print "Reached timeout\n"; } else { alarm(0); die; } } else { print Dumper(\@output); }
The question is how can I get the exit status of the script if it was finished before reached timeout.
Thanks
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Getting exit status from forked script
by Abigail-II (Bishop) on Jan 29, 2004 at 13:06 UTC | |
Re: Getting exit status from forked script
by Ao (Friar) on Jan 29, 2004 at 14:01 UTC |
Back to
Seekers of Perl Wisdom