2008-12-28 8 views
27

Je crée des processus enfants avec fork() en C/C++.
Lorsque le processus parent se termine (ou est détruit pour une raison quelconque), je souhaite également que tous les processus enfants soient également supprimés.
Est-ce que cela est fait automatiquement par le système? Ou je dois le faire moi-même?Les processus fils créés avec fork() sont-ils automatiquement supprimés lorsque le parent est tué?

Merci.


questions similaires pré-existantes:

+0

Je me souviens avoir vu des questions similaires. Par exemple. http://stackoverflow.com/questions/269494/how-can-i-cause-a-child-process-to-exit-when-the-parent-does – PolyThinker

Répondre

32

Non Si le parent est tué, les enfants deviennent les enfants du processus d'initialisation (qui a le processus id 1 et est lancé en tant que premier processus utilisateur par le noyau). Le processus init vérifie périodiquement les nouveaux enfants et les tue s'ils sont sortis (libérant ainsi les ressources allouées par leur valeur de retour).

La question a déjà été discuté avec des réponses de qualité ici: How to make child process die after parent exits?

+0

Cela signifie-t-il que les processus enfants ne sont pas anormalement tués? avant la fin prématurée, mais attendez qu'ils exécutent leur code, puis se terminent? –

Questions connexes