Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Setting a timer to a system call

by Freezer (Sexton)
on Aug 15, 2012 at 15:17 UTC ( #987568=perlquestion: print w/ replies, xml ) Need Help??
Freezer has asked for the wisdom of the Perl Monks concerning the following question:

Dear Monks,

I have a system call from within Perl to a Java program. I would like to set it up so that if the Java program does not finish executing within a fixed period of time it times out.

I was thinking of using a Linux call something like:
ulimit -t 200 | java ....
Although this does not throw an error, it clearly does not do what I want it to do.

Does anyone have potential solutions?

Comment on Setting a timer to a system call
Download Code
Re: Setting a timer to a system call
by zentara (Archbishop) on Aug 15, 2012 at 15:38 UTC
      I think that this code you link to looks interesting. However, oh so complicated. Is it worth reflecting on how other languages might handle this problem, as it seems that a new Perl command could be in order?
        It dosn't get much simpler than this. Instead of the SIG(INT), you could just directly call exit, for a quicker kill.
        #!/usr/bin/perl -w use strict; use threads; use threads::shared; my $timer_go:shared = 0; my $worker = threads->create(\&worker); my $timer = threads->create(\&timer,$worker); print "hit enter to start\n"; <>; $timer_go=1; <>; $timer->join(); $worker->join(); sub timer { my $worker = shift; while(1){ if($timer_go){ my $count = 0; while(1){ $count++; if($count > 5){ print "timed out\nHit enter to finish\n"; # Send a signal to a thread $worker->kill('INT'); return; } sleep 1; print "timing $count\n"; } }else{sleep 1} } } sub worker { $|++; $SIG{INT} = sub{ warn "Caught Zap!\n"; sleep 1; exit; }; # do your timed program here. my $worker_pid = open( READ, "top -d 1 -b |" ); print "\t$worker_pid\n"; while(<READ>){ } return; }

        I'm not really a human, but I play one on earth.
        Old Perl Programmer Haiku ................... flash japh
Re: Setting a timer to a system call
by runrig (Abbot) on Aug 15, 2012 at 15:42 UTC

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (10)
As of 2015-07-01 21:35 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (22 votes), past polls