Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Re: Timeout on script

by Abigail-II (Bishop)
on Jan 26, 2004 at 17:30 UTC ( #324187=note: print w/replies, xml ) Need Help??


in reply to Timeout on script

Here's something to start off with. Note that it's not finished and only tested with one trivial example.
package Timed; use strict; use warnings; use Exporter (); our @ISA = qw /Exporter/; our @EXPORT = qw /timed_system/; sub timed_system { my $time = shift; my $pid; local $SIG {ALRM} = sub {kill 15, $pid or die "kill: $!"; die "Timeout!"}; # Just SIGTERM. eval { $pid = fork; die "Fork failed: $!" unless defined $pid; unless ($pid) { exec @_; die "Exec failed: $!"; } alarm $time; waitpid $pid => 0; }; die $@ if $@ && $@ !~ /^Timeout!/; } 1;

Abigail

Replies are listed 'Best First'.
Re: Re: Timeout on script
by hotshot (Prior) on Jan 27, 2004 at 06:39 UTC
    Thanks for the post, but do you know where I can get an example for the fork-exec solution, since in perlipc manual pages they mentioned that using eval-die can leave zombies and I would like to avoid that.

    Thanks
      Thanks for the post, but do you know where I can get an example for the fork-exec solution,
      Did you actually bother to look at the code I posted?
      They mentioned that using eval-die can leave zombies
      As I said, the code I posted hasn't been finished yet. Work on it.

      Abigail

        Just a thought, if they suggested to use fork/exec there, why trying to sophisticate the eval/die solution, are there any advantages doing so, or is it the same effort?

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (6)
As of 2020-10-30 19:20 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    My favourite web site is:












    Results (283 votes). Check out past polls.

    Notices?