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