Welke status moet een proces krijgen van het ouderproces om een zombie te worden?
sobes.tech AI
Antwoord van AI
Het proces wordt een zombie of een "geestproces" wanneer het zijn uitvoering voltooit (overschakelt naar de status EXIT_ZOMBIE), maar de vermelding ervan in de proceslijst nog bestaat, wachtend tot de ouderproces zijn beëindigingsstatus leest via de systeemoproep wait() of waitpid(). Tot dat moment gebruikt het minimale bronnen (bijna alleen de vermelding in de proceslijst), maar vrijwaart het niet volledig de eraan gekoppelde bronnen.
In de proceslijst wordt zo'n proces meestal weergegeven met de aanduiding <defunct>.
# Voorbeeld van de uitvoer van het ps-commando, dat een zombieproces toont
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]
...
Om het zombieproces te laten verdwijnen, moet het ouderproces wait() of waitpid() aanroepen. Als het ouderproces eindigt voordat het de status van zijn zombie-kinderen leest, worden deze kinderen onder de hoede van het init-proces (met ID 1) geplaatst, dat automatisch wait() aanroept voor zijn kinderen, waardoor de zombies worden opgeruimd.
Dus, de belangrijkste status die een proces van het ouderproces ontvangt om een zombie te worden, is de beëindigingsstatus, die de ouder nog niet heeft verwerkt via de wait*-aanroepen.