7. Terminaison, zombies et orphelins
Un processus peut terminer normalement, appeler exit, recevoir un signal, être forcé à terminer ou subir une erreur fatale comme une faute de segmentation. Sous Unix, kill signifie plus généralement « envoyer un signal »; le résultat dépend du signal.

L’enfant termine avec le code 7. Le parent conserve brièvement son état, puis appelle waitpid pour récupérer ce résultat.
- Z est l’état zombie : l’enfant est terminé, son statut reste à collecter.
- waitpid récupère le code 7; l’entrée de cet enfant disparaît ensuite de /proc.
Lire la capture en texte
os.fork() → enfant termine avec 7
ps ... ; os.waitpid(enfant, 0)
Avant waitpid :
PID PPID STAT COMMAND
727 385 Z+ python3
Après waitpid : code de sortie = 7
Entrée /proc/727 encore présente : FalseDémonstration Station Minuit · Ubuntu 24.04 / WSL2 · Python 3 · 15 octobre 2026 (Toronto). Sortie réelle remise en page et capturée; exemple ajouté, distinct du matériel officiel.
À la fin, le noyau libère mémoire, descripteurs et ressources, retire le processus des files actives et conserve seulement les renseignements nécessaires à la récupération du statut.
| Situation | État du fils | Cause | Résolution |
|---|---|---|---|
| Zombie | Déjà terminé | Le père n'a pas encore appelé wait |
Le père ou un processus responsable récolte le statut |
| Orphelin | Peut encore s'exécuter | Le père original est terminé | Adoption par init, systemd ou un subreaper approprié |
Le zombie ne consomme plus son espace d'exécution normal, mais occupe une entrée minimale. Une accumulation indique une mauvaise gestion des enfants. L'orphelin, lui, peut continuer de travailler.