Sobes.tech
Middle

Bir prosesin zombi olmaq üçün valideyn prosesindən hansı vəziyyəti əldə etməlidir?

sobes.tech Süni İntellekt

AI-dan cavab

Proses, zombi və ya "hayalet proses" olur, o zaman ki, o, icrasını tamamlayır ( EXIT_ZOMBIE vəziyyətinə keçir), lakin onun haqqında qeyd proseslər cədvəlində hələ də mövcuddur və onun valideyn prosesi wait() və ya waitpid() sistem çağırısı ilə onun tamamlanma vəziyyətini oxumağı gözləyir. Bu anda, o, minimal resurslar istifadə edir (demək olar ki, yalnız proseslər cədvəlində qeyd), lakin onunla əlaqəli resursları tamamilə sərbəst buraxmır.

Proseslər cədvəlində, belə bir proses adətən <defunct> göstəricisi ilə göstərilir.

# ps əmri çıxış nümunəsi, zombi prosesi göstərir
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]
...

Zombi prosesin yox olması üçün, valideyn proses wait() və ya waitpid() çağırmalıdır. Əgər valideyn proses, zombi uşaqlarının vəziyyətini oxumadan əvvəl bitərsə, bu uşaqlar init prosesinin (ID 1) uşaqları olur və init avtomatik olaraq wait() çağırır, beləliklə zombi proseslər təmizlənir.

Beləliklə, bir prosesin zombi olmasına səbəb olan əsas vəziyyət, onun hələ wait* çağırışları ilə işlənməmiş olan tamamlanma vəziyyətidir.