La différence entre le signal SIGKILL SIGTERM considérant arborescence des processus
Quelle est la différence entre le signal SIGTERM et SIGKILL quand il s'agit de l'arborescence des processus?
Lorsqu'une racine thread reçoit SIGKILL t-il se faire tuer proprement, ou faut-il laisser l'enfant threads comme des zombies?
Est-il un signal qui peut être envoyé à une racine fil de sortie correctement en ne laissant aucune zombie fils ?
Grâce.
Il y a un système distinct d'appel pour le meurtre d'ensemble de groupes de processus:
![La Vraie Raison de ne Pas Utiliser de SIGKILL](i.stack.imgur.com/SnEqw.png), il est probable que vous voulez garder cette bande dessinée dans l'esprit. Source : bretelle de sortie.us/geek/pas-de sigkill
killpg
. Aussi il est important d'être clair sur la différence entre threads et sous Linux - ils sont des choses différentes.![La Vraie Raison de ne Pas Utiliser de SIGKILL](i.stack.imgur.com/SnEqw.png), il est probable que vous voulez garder cette bande dessinée dans l'esprit. Source : bretelle de sortie.us/geek/pas-de sigkill
OriginalL'auteur notytony | 2011-03-22
Vous devez vous connecter pour publier un commentaire.
Si vous tuez le processus racine (processus parent), ce qui devrait rendre les enfants orphelins, pas de zombie enfants. les enfants orphelins sont faites lorsque vous tuez un processus parent, et le noyau met à init de la mère des orphelins. init est censé attendre jusqu'à ce orphelin meurt, puis utilisez attendre pour le nettoyer.
Zombie enfants sont créés lorsqu'un processus (et pas de ses parents), et ses parents ne prennent pas de son état de sortie de la table de processus.
Il me semble que vous êtes inquiet au sujet de laisser des orphelins parce que par définition, lorsque vous tuez un zombies processus parent, le zombie enfant lui-même meurt.
De tuer votre orphelins, utilisez kill -9 , qui est l'équivalent de SIGKILL.
ici est un plus en profondeur tutoriel pour le meurtre de choses sur linux:
http://riccomini.name/posts/linux/2012-09-25-kill-subprocesses-linux-bash/
OriginalL'auteur Chris Marie
Vous ne pouvez pas contrôler que par le signal; seulement son processus parent peut, en appelant
waitpid()
ou en définissant les gestionnaires de signaux pourSIGCHLD
. VoirSIGCHLD
etSA_NOCLDWAIT
dans lesigaction(2)
page de manuel pour plus de détails.Aussi, ce qui arrive à l'enfant threads dépend du noyau Linux version. Avec 2,6 de threads POSIX, tuer le thread principal doit provoquer les autres threads pour sortir proprement. Avec 2,4 LinuxThreads, chaque thread est en fait un processus distinct et
SIGKILL
ne donne pas la racine enfiler une chance de dire aux autres d'arrêter, tandis queSIGTERM
.OriginalL'auteur geekosaur