SIGINT und die Kinder

Prozess hinterlässt verwaiste Kinder nach SIGINT?

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

SIGINT und die Kinder
Was mir gerade so kommt …

Sobald ich ein Kind erzeugt hab, muss ich das doch mit wait irgendwann abholen. Sonst ist das ja ganz böse und wird zum Zombie.

Aber, der Vater kann ja jederzeit beendet werden, z.B. durch ein SIGINT von einem gelangweilten User.

Werden Signale grundsätzlich an die Kinder weitergereicht? D.h. bekommt das Kind auch ein SIGINT, wenn der Vater eines bekommt? Und wartet dann der Vater noch auf sein Kindchen?

Wenn nicht: Wer holt denn später die Zombies ab, wenn der Vater beendet wurde (z.B. SIGINT) bevor das Kind fertig ist?

jo.


Also, meiner Meinung nach adoptiert der Prozess init alle verwaisten kinder…


Ich würde 1. sagen, dass die Kinder auch das SIGINT bekommen, weil es ja eigentlich an die ganze Prozessgruppe geht. 2. der Vater kann aber trotzdem nicht das tote Kind einfangen, wenn es nicht explizit so programmiert wurde. Also wird wohl irgendein Großvater es einfangen!


Ja, steht so im Skript. Aber: Warum kümmere ich mich dann überhaupt drum?

jo.


Also wie kümmert man sich jetzt um Zombies?Wird das mit dem waitpid im Vater schon erledigt?Oder ist das ganz was anderes?


Also wenn man ein Strg-C macht erhalten AFAIK ALLE Prozesse, die auf diesem terminal laufen ein SIGINT (wenn sie es ignorieren oder maskiert haben, passiert mit denen natürlich nichts)

Um tote Sohnprozesse muss man sich vor allem dann kümmern, wenn der Vaterprozess noch auf unbestimmte Zeit weiterläuft, sonst hängen die Zombies die ganze Zeit im Speicher rum.

Wenn der Vater stirbt, werden eventuelle Zombies, die er hinterlassen hat, vom Prozess init adoptiert und “erlöst”


So ist es! Musik! ;))

Wenn man ein Terminal zumacht, schickt es SIGINT o.ä. und alle Hintergrundprozesse der Shell sterben.
Macht man es aber zu, indem man die Shell mit EOF (strg+d) beendet, bleiben die Kinder am Leben. init ist soo fürsorglich… :heart: