Pourquoi un processus de zombie est-il nécessaire?

Wikipedia donne essentiellement toutes les informations possibles sur les processus de zombies que je DOIS connaître, mais une simple ligne sur la façon dont cela pourrait être utile.

Comment est-ce alors réellement “utile”? Le PID ne serait-il pas alors disponible si le processus de zombie nommé devait être supprimé au lieu d’être conservé là?

Ou existe-t-il d’autres raisons pour lesquelles le processus zombie devrait exister?

Les processus Zombie sont utiles.

Les processus Zombie permettent au parent d’être assuré de pouvoir récupérer le statut de sortie, les informations comptables et l’identifiant de processus des processus enfants.

Un processus qui ne nettoie pas ses enfants zombies n’est pas programmé correctement.

Les processus Zombie sont vraiment importants et doivent absolument exister. Tout d’abord, il est important de comprendre comment fonctionne la création de processus sous Unix / Linux. La seule façon de créer un nouveau processus consiste à créer un nouveau processus enfant via fork() pour un processus existant. De cette manière, tous les processus du système sont organisés dans une belle hiérarchie arborescente. Essayez de ps -Hu sur un système Linux pour voir la hiérarchie des processus que vous possédez.

Dans de nombreux programmes, il est essentiel qu’un processus parent puisse obtenir des informations de base sur ses processus enfants qui ont été abandonnés. Ces informations de base incluent le statut de sortie et l’utilisation des ressources de l’enfant. Lorsque le parent est prêt à obtenir des informations sur un processus enfant mort, il appelle l’une des fonctions wait() pour attendre qu’un enfant quitte et obtienne des informations sur le statut de sortie et l’utilisation des ressources.

Mais que se passe-t-il si un processus enfant se termine avant que le parent l’attende? C’est là que les processus de zombies deviennent nécessaires . Le système d’exploitation ne peut pas simplement ignorer le processus enfant. le fonctionnement du processus parent peut dépendre de la connaissance du statut de sortie ou de l’utilisation des ressources de l’enfant. C’est-à-dire que le processus parent peut avoir besoin de savoir que l’enfant est sorti anormalement ou qu’il collecte des statistiques d’utilisation du processeur pour ses enfants, etc. Ainsi, le seul choix est de sauvegarder ces informations et de les rendre disponibles appelez wait() . Cette information est ce qu’est un processus zombie et c’est un élément essentiel du fonctionnement de la gestion des processus sous Unix / Linux. Les processus Zombie permettent au parent d’être assuré de pouvoir récupérer le statut de sortie, les informations comptables et l’ID de processus pour les processus enfants, que le parent appelle wait() avant ou après la fermeture du processus enfant.

C’est pourquoi un processus de zombie est nécessaire.

Note de bas de page: Si le processus parent n’appelle jamais wait() , le processus enfant est répercuté sur le processus init lorsque le processus parent meurt et init wait() pour l’enfant.

La réponse est sur Wikipedia aussi, qui est:

Cette entrée est toujours nécessaire pour permettre au processus parent de lire le statut de sortie de son enfant.