perl alarm
Giorgos Keramidas
keramida at ceid.upatras.gr
Wed Jan 9 14:03:50 EET 2008
On 2008-01-09 13:35, "Giorgos D. Pallas" <gpall at ccf.auth.gr> wrote:
> Γεια χαρά λιστές!
>
> Το παρακάτω δεν θα έπρεπε να λειτουργεί;
>
> $SIG{ALRM} = sub { insert_error("FATAL - timeout accessing $hostname"); exit; };
> alarm(300);
>
> # diadikasia pou mporei na kollisei kapou
>
> #apenergopoihsh alarm
> alarm(0);
Ναι. Στο `perlipc' manpage μάλιστα έχει σχεδόν το ίδιο κομμάτι κώδικα
για παράδειγμα:
eval {
local $SIG{ALRM} = sub { die "alarm clock restart" };
alarm 10;
flock(FH, 2); # blocking write lock
alarm 0;
};
if ($@ and $@ !~ /alarm clock restart/) { die }
> Έχει κανείς να προτείνει κάποιο ανάλογο τρόπο για το ίδιο αποτέλεσμα;
Εγώ συνήθως προτιμώ η alarm function να μην είναι ανώνυμο function:
my %children; # Hash of PIDS we have spawned.
my $timeout_seconds; # Global timeout in seconds.
sub timeout_hook();
sub timeout_hook {
kill(15, keys(%children))
if (%children);
error("timed out after $timeout seconds");
exit(1);
}
# και παρακάτω ...
if ($timeout_seconds > 0) {
$SIG{ALRM} = \&timeout_hook;
alarm($timeout_seconds);
}
# long running stuff
More information about the Linux-greek-users
mailing list