|
|||||||||||||||||||||||||||
On Fri, 2 Aug 2002 sslug@sslug wrote:
> 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;
Det kan sikkert skrives pænere. Prøv at rette 10 til 1.
my $alarm = 0;
local $SIG{ALRM} = sub { $alarm=1; };
alarm (5);
$p=fork;
if(not $p) {
`sleep 10`;
} else {
use POSIX ":sys_wait_h";
do {
$kid = waitpid(-1,&WNOHANG);
sleep 1;
} until ($kid == -1 or $alarm == 1);
if($alarm) {
print "timed out\n"
}
}
/Ole
--
Gør noget ved spam: Send det til sslug@sslug
http://www.net-tjek.dk/ehandel/indh1.htm
|
||||||||||||||
|
||||||||||||||