SkÃ¥ne Sjælland Linux User Group - http://www.sslug.dk Forside   Tilmelding   Postarkiv   Forum   Kalender   Søg
MhonArc Dato: [Date Prev] [Kronologisk oversigt] [Date Next]   TrÃ¥d: [Date Prev] [Oversigt trÃ¥de] [Date Next]   MhonArc
 

Re: [PERL] Timeout



sslug@sslug writes:

> Jeg ville gerne kunne kalde et simpelt kommandolinie program, men da jeg
> ikke kan tillade mig at vente i evigheder hvis programmet skulle fejle, har
> jeg brug for at kunne afbryde programmet efter en periode.
> 
> Jeg havde tænkt mig noget i den her stil:
> 
> my $alarm = 0;
> local $SIG{ALRM} = sub { $alarm=1; };
> alarm (5);
> eval { `sleep 10` };
> print "timed out\n" if $alarm;
> 
> Og programstumpen finder godt nok ud af at programmet et timet ud, men det
> enter stadigvæk - jeg kunne kalde exit fra signal håndterings rutinen, men
> programmet skal kunne arbejde videre efter en timeout.
> Og nu kan jeg delsværre ikke komme i tanke om nogen simpel måde at
> implementere det på, men det håber jeg at der er andre på listen der kan.

Husk på at qx{ stuff } eksekverer i en subshell (ny proces) og dit
SIGALRM bliver ikke leveret denne. Så hvis du vil lave det trick skal
du nok lave en fork() og exec() og få pid'en på den proces der laver
"sleep 10" og kalde kill() fra din signal håndtering.


-- 
Christian Hemmingsen


 
Forside   Tilmelding   Postarkiv   Oversigt   Kalender   Søg

 
 
Henvendelse vedrørende websiderne til <www_admin>. Senest ændret 2005-08-10, klokken 19:54
Denne side vedligeholdes af MHonArc .