2011-07-25 6 views
0

Mon processus Linux a 4 enfants. Après un certain temps d'exécution tous les enfants adoptés par le processus init. Comment pouvons-nous empêcher cette situation? (Ce n'est pas le cas avec les processus Zombie).empêcher le processus enfant de devenir un processus orphelin

Le processus est écrit en C et le système d'exploitation est Linux. Mon code appelle waitpid! Quel pourrait être le problème? En 99,99%, nous n'avons pas ce problème.

Dernière mise à jour: Que se passe-t-il si quelqu'un exécute "kill -9"? Ceci termine immédiatement le processus parent et laisse les enfants orphelins.

+0

Votre modification ne change pas la réponse. –

Répondre

2

Si vos processus sont réparés par init, cela signifie que leur processus parent est mort. Lorsqu'un parent d'un processus meurt, init l'adopte de sorte qu'il puisse récolter le zombie par wait() sur l'enfant quand il() reçoit . Si vous ne voulez pas init devenir le parent de vos enfants, vous devrez vous assurer que votre processus dure jusqu'à ce que tous vos enfants soient morts et aient été récoltés par votre programme.

1

Attendez que les enfants sortent avant de sortir. Voir la page de manuel wait(2) pour plus de détails.

0

Vérifiez dans la page principale les paramètres de l'API waitpid et assurez-vous que votre processus parent ne soit pas terminé avant que tous les processus enfants soient terminés. Pouvez-vous poster votre code ici?

Questions connexes