Aký stav musí proces získať od rodičovského procesu, aby sa stal zombie?
sobes.tech AI
Odpoveď od AI
Proces sa zombí alebo "duchovný proces" sa stáva, keď ukončí svoju činnosť (prejde do stavu EXIT_ZOMBIE), ale jeho záznam v tabuľke procesov ešte stále existuje, čakajúc na to, aby jeho rodičovský proces prečítal jeho stav ukončenia pomocou systémového volania wait() alebo waitpid(). Do tej doby zaberá minimálne zdroje (prakticky len záznam v tabuľke procesov), ale úplne neuvoľňuje s ním spojené zdroje.
V tabuľke procesov je takýto proces zvyčajne zobrazený s ukazovateľom <defunct>.
# Príklad výstupu príkazu ps, ukazujúci 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 zmizol, musí rodičovský proces zavolať wait() alebo waitpid(). Ak rodičovský proces skončí skôr, ako prečíta stav svojich zombie detí, tieto deti sa stanú deťmi procesu init (s ID 1), ktorý automaticky volá wait() pre svoje deti, čím sa zombie procesy vyčistia.
Hlavný stav, ktorý proces dostáva od rodičovského procesu, aby sa stal zombie, je stav ukončenia, ktorý rodič ešte neobslúžil pomocou volaní wait*.