Sobes.tech
Middle

Quel statut un processus doit-il obtenir du processus parent pour devenir un zombie?

sobes.tech IA

Réponse de l'IA

Le processus devient un zombie ou un "processus fantôme" lorsqu'il termine son exécution (passe à l'état EXIT_ZOMBIE), mais son entrée dans la table des processus existe toujours, en attendant que son processus parent lise son statut de terminaison via l'appel système wait() ou waitpid(). Jusqu'à ce moment, il occupe des ressources minimales (pratiquement seulement l'entrée dans la table des processus), mais ne libère pas complètement les ressources qui lui sont associées.

Dans la table des processus, un tel processus est généralement affiché avec l'indicateur <defunct>.

# Exemple de sortie de la commande ps, montrant un processus zombie
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
...
someuser  1234  0.0  0.0      0     0 pts/0    Z+   10:00   0:00 [defunct_process]
...

Pour que le processus zombie disparaisse, le processus parent doit appeler wait() ou waitpid(). Si le processus parent se termine avant de lire le statut de ses enfants zombie, ces enfants deviennent des enfants du processus init (avec l'ID 1), qui appelle automatiquement wait() pour ses processus enfants, éliminant ainsi les zombies.

Ainsi, le principal état que reçoit un processus du processus parent pour devenir zombie est l'état de terminaison, que le parent n'a pas encore traité via les appels wait*.