|
|||||||||||||||||||||||||||
sslug@sslug writes:
> 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.
Jeg kan ikke helt parse den sætning.
For det første så skal du passe på med at blamde alarm og
sleep. Systemkaldet sleep kan være implementeret med alarm.
'perldoc -f alarm' giver følgende kodestump, der kan se ud til at gøre
det du ønsker:
eval {
local $SIG{ALRM} = sub { die "alarm\n" }; # NB:\n required
alarm $timeout;
$nread = sysread SOCKET, $buffer, $size;
alarm 0;
};
if ($@) {
die unless $@ eq "alarm\n"; # propagate unexpected errors
# timed out
} else {
# didn't
}
--
Peter Makholm | Yes, you can fight it, but in the end the ultimate
sslug@sslug | goal of life is to have fun
http://hacking.dk | -- Linus Torvalds
|
||||||||||||||
|
||||||||||||||