Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

comment on

( [id://3333]=superdoc: print w/replies, xml ) Need Help??

I'm sure there's an easy way around this with fork, but rather than guess at the answer, I'll just present the problem (I've been trying to solve this for a bit).

#!/usr/bin/perl use strict; use warnings; eval { local $SIG{ALRM} = sub { die "alarm\n" }; alarm 2; system("perl -e '1 while 1'") == 0 or die "Cannot do infinite loop: $!"; alarm 0; }; die $@ unless $@ eq "alarm\n"; # the following lines let me do a 'ps awux|grep perl' # while this is running print 'Hanging ...'; <STDIN>;

I don't do a huge amount of work with process management, so this is giving me fits. Basically, I sometimes need call code code which may never return but I have no way of knowing in advance if this is the case. I want an alarm to catch when that happens. However, when I do that, the proces is hanging around in the process table. How can I ensure that when the system times out that the process is reaped? I'm making about 10,000 system calls and this is rapidly killing my system.

Update:

I forgot that this isn't a real example of what I need. I also need the result, if any, of the command I execute. My actual code looks like this:

sub timeout { my ( $package, $timeout, $code ) = @_; my $result; eval { local $SIG{ALRM} = sub { die "alarm\n" }; # NB: \n required alarm $timeout; $result = $code->(); alarm 0; }; if ($@) { die "Could not make $package: $@" unless $@ eq "alarm\n"; # + propagate unexpected errors # timed out } return $result; } timeout( $package, 10, sub {`perl $make_prog 2>&1`} );

Cheers,
Ovid

New address of my CGI Course.


In reply to Killing a hanging child process by Ovid

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":



  • Are you posting in the right place? Check out Where do I post X? to know for sure.
  • Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
    <code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
  • Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
  • Want more info? How to link or How to display code and escape characters are good places to start.
Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (None)
    As of 2024-04-19 00:12 GMT
    Sections?
    Information?
    Find Nodes?
    Leftovers?
      Voting Booth?

      No recent polls found