Junior — Middle
Comment peut-on terminer ou forcer l'arrêt d'un processus zombie dans un système d'exploitation?
sobes.tech IA
Réponse de l'IA
Un processus zombie est un processus qui a terminé, mais son processus parent n'a pas encore lu son statut de terminaison (n'a pas appelé wait). Dans le système, il occupe une entrée dans la table des processus, mais n'utilise pas de ressources CPU.
Il n'est pas possible de terminer directement un processus zombie, car il est déjà terminé. Pour se débarrasser d'un zombie, il faut :
- Terminer ou redémarrer le processus parent qui n'a pas appelé wait. Dans ce cas, init (PID 1) deviendra le nouveau parent du zombie et appellera automatiquement wait, le nettoyant.
- Envoyer le signal SIGCHLD au processus parent pour qu'il traite le statut de terminaison des processus enfants.
Exemple de commande pour envoyer le signal au parent :
kill -s SIGCHLD <PID_du_parent>
Si le parent ne réagit pas, il peut être terminé :
kill -9 <PID_du_parent>
Après cela, init récupérera et nettoiera le zombie.