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.