hotshot has asked for the wisdom of the Perl Monks concerning the following question:
Hi guys!
I use the following code for executing a script with timeout on it:
my problem is that i get the following message when calling the function:
Argument "WNOHANG" isn't numeric in waitpid at /../../prog.pl
and the program gets stuck.
can anyone help?
I use the following code for executing a script with timeout on it:
the above code is wrraped into a function and called with two parameters: script and timeout.eval { alarm($timeout); pipe(READ,WRITE); if ($pid = fork) { $SIG{CHLD} = sub { $exitStatus = $? 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); }
my problem is that i get the following message when calling the function:
Argument "WNOHANG" isn't numeric in waitpid at /../../prog.pl
and the program gets stuck.
can anyone help?
Back to
Seekers of Perl Wisdom