Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]7601[/thread]

system befehl kommt nicht zurück: Kann ich auf nen Timeout laufen lassen?

Leser: 1


<< >> 5 Einträge, 1 Seite
Gast Gast
 2006-01-09 18:09
#61595 #61595
Es ist zum aus der Haut fahren. Ich habe ein Perlskript geschrieben, was installation von kleinen Dateien macht. Es kann durchaus dazu kommen, das 20-30 Sachen installiert werden. Wenn die Installation auf einen Fehler läuft ist alles wunderbar. Der Aufruf kommt zurück, ich kann Fehlerauswertung machen und es geht weiter.

Jetzt zu meinem Problem: Es kann unter Umständen allerdings vorkommen, dass sich der Installationsprozess aufhängt und nicht mehr zurückkommt. Das heißt ich bekomme keinen Fehler keinen OK und einfach gar nichts. Das Skript läuft stundenlang, allerdings wird nichts mehr gemacht.

Kann ich irgendwie dafür sorgen, dass der Befehl nach 5 Minuten abbricht wenn er noch nicht fertig ist? Die Installation dauert nämlich nie länger als 2-3 Minuten. +2-3 Minuten Toleranz sind es dann 5 Minuten. Dieser Fall soll nur eintreten, wenn die Installation wirklich stehenbleibt ansonsten nicht.

Würde mich über Antworten und Ideen freuen.

Vielen Dank schon im Voraus.

Mit freundlichen Grüßen

Der Schlampie
bloonix
 2006-01-09 20:07
#61596 #61596
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=Guest,09.01.2006, 17:09]Es kann unter Umständen allerdings vorkommen, dass sich der Installationsprozess aufhängt und nicht mehr zurückkommt.[/quote]
Hierfür wäre fork und waitpid eine Lösung. Siehe auch hier.
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
Dubu
 2006-01-09 22:21
#61597 #61597
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
perldoc -f alarm
sesth
 2006-01-10 10:00
#61598 #61598
User since
2005-02-01
181 Artikel
BenutzerIn
[default_avatar]
Unter Windows kannst Du anstatt system auch Win32::Process::Create benutzen. Damit hast Du dann ein Handle, auf dem Du ein Wait mit Timout ausführst.
Gruß
Thomas
Crian
 2006-01-10 11:46
#61599 #61599
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Hast du die Installation auch selbst geschrieben? Dann würd ich lieber dort nach dem Fehler suchen ;)\n\n

<!--EDIT|Crian|1136886413-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
<< >> 5 Einträge, 1 Seite



View all threads created 2006-01-09 18:09.