Gibt es eine Möglichkeit, einen Zeitzähler zu erstellen, mit dem Teile eines Skripts so lange ausgeführt werden können, wie es funktioniert? Zum Beispiel habe ich den folgenden Code:
%Vor%Theoretisch möchte ich diese Schleife für 3 Minuten laufen lassen, selbst wenn die Schleifenanweisungen noch nicht beendet sind, sollte sie nach genau 3 Minuten noch aus der Schleife ausbrechen.
Tatsächlich öffnet das Programm ein Zeitzählerfenster, das parallel zu einem Teil des Skripts funktioniert (jedes Mal, wenn ich es anrufe).
Darüber hinaus führt der Unteraufruf 'comp_simu_exe' einen externen Simulator (in der Shell) aus, der nach Ablauf des Zeitlimits beendet wird (dieser Prozess muss ebenfalls beendet werden).
%Vor%Gibt es eine Verbindung zwischen dem Problem des toten Kommens und dem Aufruf der Systemfunktion?
Die Art und Weise, wie Sie in Perl mit solchen Timeouts umgehen, ist die Funktion alarm
. Es sendet das Signal ALRM
an Ihren Prozess nach der Anzahl der Sekunden, die Sie daran übergeben haben. Seien Sie vorsichtig, wenn der Code, den Sie versuchen, das Timeout für Aufrufe sleep
einzurichten, da sie auf vielen Plattformen nicht gut mischen. Die Grundstruktur sieht so aus:
oder kompakter geschrieben:
%Vor%