Hi!
Ich habe folgende Problematik: Ein Prozess erstellt für eine
Verarbeitung mehrere Childs. Nun will ich aber, dass (falls der Parent
mit SIGINT in die Knie gezwungen wird) seine Kinder noch ihre Arbeit
fertig machen und der Parent dann (mit dem letzten Child) terminiert.
Ich dachte, dass ich das mit einem Signalhandler für SIGINT in dem mit
einer wait-schleife auf die terminierung aller kinder gewartet wird,
bewerkstelligen kann.
1 | while (waitpid(-1, NULL, WNOHANG) > 0);
|
Aber leider funktioniert es (wie so oft) nicht wie gewollt. Ich habe
dann auch versucht die weitergabe von SIGINT an die Kinder zu verhindern
(wie hier beschrieben
http://stackoverflow.com/questions/6803395/child-process-receives-parents-sigint)
aber so terminiert das programm nie.
mfg