Kādu statusu procesam jāsaņem no vecāka procesa, lai kļūtu par zombiju?
sobes.tech AI
Atbilde no AI
Process kļūst par zombi vai "vēlreizējo procesu", kad tas pabeidz savu izpildi (pāriet stāvoklī EXIT_ZOMBIE), bet tā ieraksts procesoru tabulā joprojām pastāv, gaidot, kad tā vecāks process lasīs tā beigu stāvokli, izmantojot sistēmas izsaukumu wait() vai waitpid(). Līdz tam tas aizņem minimālus resursus (praktiski tikai ierakstu procesoru tabulā), bet pilnībā neatbrīvo ar to saistītos resursus.
Procesoru tabulā šāds process parasti tiek attēlots ar indikatoru <defunct>.
# ps komandas izvade, kas rāda zombi procesu
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]
...
Lai zombi process izzustu, vecāka procesa ir jāizsauc wait() vai waitpid(). Ja vecāka procesa beidzas pirms tas ir lasījis savu zombi bērnu stāvokli, šie bērni kļūst par init procesa (ID 1) bērniem, kurš automātiski izsauc wait() saviem bērniem, tādējādi notīrot zombi.
Tādējādi galvenais stāvoklis, ko process saņem no vecāka procesa, lai tas kļūtu par zombi, ir beigu stāvoklis, kuru vecāks vēl nav apstrādājis ar wait* izsaukumiem.