Perl, Funktionsaufruf begrenzen.
Christian Kuelker
christian.kuelker at uni-bielefeld.de
Thu Sep 18 20:55:34 CEST 2003
Am Donnerstag, 18. September 2003 09:46 schrieb
Markus Wigge:
> Kann ich die Ausführungszeit einer Funktion
> limitieren?
>
> so in etwa:
>
> sub meine_func {
> // mach was
> }
>
> "limit" (meine_func, 10);
> // 10 = 10 sec.
Die Anwort muesste eigentlich nein lauten. Aber
man kann Operationen zeitlich limitieren. (Wie in
den vorigen mails angedeutet mit SIGAlARM und
timeout.
Ein Beispiel, das man so oder so aehnlich auch in
der Literatur finden duerfte:
#neuer HANDLER fuer SIGALARM
$SIG{ALARM}=sub{die "zeitlimit"};
eval{
alarm(7200);# 2 Stunden, (ZEIT in sec)
# ab hier die Verarbeitung
&do_something_for_two_hours();
alarm(0);# Man sollte den Alarm loeschen
};
if($@){
if($@=~m/zeitlimit/){# Zeitlimit erreicht!
# Hier kann man was machen!
&do_some_cleaning();
}else{
alarm(0); # Man sollte den Alarm loeschen
# aber leider war was passiert, womit man
# nicht gerechnet hatte ...
die print "Unerwarteter Fehler\n";
}
}
More information about the Linux
mailing list