(Courriels de diversion:
<jubiler@zester-versent.com>
<accosteront@intitula-bouleversait.com>
<rebroussa@alienant-plafonniers.com>
<clarines@promotrices-bourbon.com>
<degele@fraternisation-flechies.com>
<chevalets@demarrerons-rêvait.com>
<reconnaissez@boitions-pâlissait.com>
<fusait@clins-suppliee.com>
<pretextez@entamant-normalises.com>
<decolorations@ride-reinscrivions.com>
)
François Hillion a écrit :
Question subsidiaire : le kill -9 engendre parfois des zombies.
Comment tuer les zombies (si c'est même possible) ?
Un processus reste dans l'état zombie tqnt que son processus père ne
l'a pas attendu (en exécutant l'appel système wait). Il possède des
informations qui pourraient être demandées par le père (typiquement son
code de sortie).
Comme son nom l'indique un zombie est déjà mort, donc on ne peut le tuer.
Un processus dans l'état zombie n'occupe qu'une entrée dans la table
des processus, et rien d'autre (pas d'image mémoire, pas d'espace
d'adressage, pas de descripteur de fichiers, rien de rien). Il n'est
donc pas vraiment gênant, en général.
Si le processus père meurt avant ses processus fils, ces derniers se
voient adoptés par le processus de pid 1 (typiquement init, qui passe
son temps à exécuter des appels à wait).
C'est pourquoi quand un processus veut lancer un autre processus sans
se préoccuper de ce qu'il advient ensuite, il est courant de faire un un
double fork :
fork :
- pere : wait (pour que le fils ne devienne pas zombie)
- fils : fork
- fils : exit
- petit-fils : exec, ou tout autre traitement.
Après le exit du fils, le père revient du wait (le fils ne devient pas
zombie), et le petit fils est adopté par init.
En shell, on btient le même genre d'effets en faisant : (programme &) &
--
Marc Thirion | Ramonville Saint-Agne, France
Projet Internet et Citoyenneté : http://www.le-pic.org/
--------------------------------------------------------------------
Les listes de diffusion occultes: <URL:http://www.CULTe.org/listes/>