[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: ssh und maximale Laufzeit definieren
[Thread Prev] | [Thread Next]
- Subject: Re: ssh und maximale Laufzeit definieren
- From: Michael Lestinsky <michael@xxxxxxxxxxxx>
- Date: Wed, 22 Oct 2008 10:44:48 -0400
- To: uugrn@xxxxxxxxxxxxxxx
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/