Jaký stav musí proces získat od rodičovského procesu, aby se stal zombie?
sobes.tech AI
Odpověď od AI
Proces se stává zombie nebo "duchovým procesem", když dokončí svou činnost (přejde do stavu EXIT_ZOMBIE), ale jeho záznam v tabulce procesů stále existuje, čekající na to, až jeho rodičovský proces přečte jeho stav ukončení pomocí systémového volání wait() nebo waitpid(). Do té doby zabírá minimální zdroje (prakticky jen záznam v tabulce procesů), ale úplně neuvolňuje s ním spojené zdroje.
V tabulce procesů je takový proces obvykle zobrazen s ukazatelem <defunct>.
# Příklad výstupu příkazu ps, ukazujícího zombie proces
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]
...
Aby zombie proces zmizel, musí rodičovský proces zavolat wait() nebo waitpid(). Pokud rodičovský proces skončí dříve, než přečte stav svých zombie dětí, tyto děti přejdou pod správu procesu init (s ID 1), který automaticky volá wait() pro své potomky, čímž zombie odstraňuje.
Hlavní stav, který proces od rodiče obdrží, aby se stal zombie, je stav ukončení, který rodič ještě nezpracoval pomocí volání wait*.