Re: ssh und maximale Laufzeit definieren

Autor: Michael Lestinsky <michael_at_lestinsky.de>
Datum: Wed, 22 Oct 2008 10:44:48 -0400
Am 17.10.2008 schrieb Michael Lestinsky:

Eine Frage hätte ich zu meinem Code aber, ich bin mit dem kill() im Signal
handler nicht zufrieden und wollte es eigentlich anders lösen. Das wait() in
folgendem "Eltern"-Teil verhält sich nicht so, wie ich die Manpage
verstehe:

>         // Elternprozess
>         signal(SIGALRM, sighandler);    // Signalhandler registrieren
>         alarm(timeout);
	  [...]
>         test = wait(&stat);

Was hier passiert ist, dass das wait tatsächlich wartet, bis das Kind von
alleine terminiert. In der Manpage lese ich zu wait(2) jedoch:

     The wait() function suspends execution of its calling process until
     status information is available for a terminated child process, or a sig-
     nal is received.  

wait() sollte also auch auf ein eingehendes Signal hin terminieren. Das
Signal geht auch vor der Beendung des Kindprozesses ein, was man leicht
durch printf-Debugging im Signalhandler zeigen kann.
wait() terminiert aber nicht auf das Signal hin und mir ist nicht klar,
warum. Ich habe diesen Code auf zwei verschiedenen BSD-Derivaten getestet,
auf denen sich der Code identisch verhält. Was mache/verstehe ich falsch?

Bye,
Michael
--
http://mailman.uugrn.org/mailman/listinfo/uugrn
Wiki: http://wiki.uugrn.org/wiki/UUGRN:Mailingliste
Archiv: http://lists.uugrn.org/
Empfangen am 22.10.2008

Dieses Archiv wurde generiert von hypermail 2.2.0 : 22.10.2008 CEST