in reply to Using IPC::Run to kill stuck process

How about something like this piece of standard timeout code:
#!/usr/bin/perl use warnings; use strict; my $script = 'ps auxww'; eval { # from http://www.rocketaware.com/perl/perlfunc/alarm.htm local $SIG{ALRM} = sub { die "alarm\n" }; # NB \n required alarm(5); # set time limit to 5 sec system($script); alarm(0); # if $script finishes in <5sec reset alarm }; die if $@ && $@ ne "alarm\n"; # propagate errors if ($@) { print "Timeout! [$@]\n"; # do stuff if eval fails (eg timeout) }

I'm not really a human, but I play one on earth.
Old Perl Programmer Haiku ................... flash japh

Replies are listed 'Best First'.
Re^2: Using IPC::Run to kill stuck process
by runrig (Abbot) on Dec 13, 2013 at 19:06 UTC
    I don't think the timeout is the problem (the problem seems to be running the command in the first place), but IPC::Run's timeout mechanism should work, and should terminate the process if it does timeout.