Milyen státuszt kell kapnia egy folyamatnak a szülőfolyamatától, hogy zombivá váljon?
sobes.tech MI
Válasz az MI-től
A folyamat zombi vagy "kísérteties folyamat" lesz, amikor befejezi végrehajtását (átmegy az EXIT_ZOMBIE állapotba), de a folyamat táblában még mindig létezik, várva, hogy a szülőfolyamat olvassa ki a befejezési állapotát a wait() vagy waitpid() rendszerhívással. Eddig minimális erőforrást foglal (szinte csak a folyamat táblában lévő bejegyzést), de nem szabadítja fel teljesen a vele kapcsolatos erőforrásokat.
A folyamat táblában általában <defunct> jelzővel jelenik meg.
# A ps parancs kimenete, zombifolyamatot mutat
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]
...
A zombifolyamat eltűnéséhez a szülőfolyamatnak wait() vagy waitpid()-t kell hívnia. Ha a szülőfolyamat a zombi gyermekek állapotának kiolvasása előtt befejezi, ezek a gyermekek az init (ID 1) folyamat gyermekeivé válnak, amely automatikusan meghívja a wait()-t, így tisztítva a zombikat.
Így a fő állapot, amit a folyamat a szülőtől kap, hogy zombivá váljon, a befejezési állapot, amit a szülő még nem dolgozott fel a wait* hívásokkal.