[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: ssh und maximale Laufzeit definieren


Am 17.10.2008 schrieb Michael Lestinsky:

Eine Frage haette ich zu meinem Code aber, ich bin mit dem kill() im Signal
handler nicht zufrieden und wollte es eigentlich anders loesen. Das wait() in
folgendem "Eltern"-Teil verhaelt 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 tatsaechlich 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 verhaelt. 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/