Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change

Re: killing command if it takes too much time

by Argel (Prior)
on Feb 10, 2011 at 00:02 UTC ( #887317=note: print w/ replies, xml ) Need Help??

in reply to killing command if it takes too much time

If you are okay with (or want) to kill the command that's taking too long then eval+alarm may be what you are looking for. Maybe this code will give you some ideas:
sub cmd_wrapper { my $timeout = shift; my $cmd = shift; my( $out, $rc ); eval { local $SIG{ALRM} = sub { die "alarm\n" }; alarm $timeout; $out = (`$cmd`)[0]; # Get first line of output $rc = $?; alarm 0; }; if( $@ ) { die "Eval failed for $cmd for unknown/unexpected reasons" if $ +@ ne "alarm\n"; die "Eval failed for $cmd because alarm timed out"; } die "Return code undefined for $cmd" unless defined $rc; return $rc, $out if wantarray; return $rc; } my $rc = cmd_wrapper(300, $pull_cmd); # Will timeout in 5 minutes (300 + seconds) # Add your logging here

Elda Taluta; Sarks Sark; Ark Arks

Comment on Re: killing command if it takes too much time
Download Code

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://887317]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (4)
As of 2016-04-30 21:49 GMT
Find Nodes?
    Voting Booth?
    :nehw tseb si esrever ni gnitirW

    Results (441 votes). Check out past polls.