Sobes.tech
Middle

Koji status proces mora da dobije od roditeljskog procesa da bi postao zombi?

sobes.tech АИ

Одговор од АИ

Proces postaje zombi ili "duh proces" kada završi svoje izvršavanje (pređe u stanje EXIT_ZOMBIE), ali zapis o njemu u tabeli procesa i dalje postoji, čekajući da njegov roditeljski proces pročita njegov status završetka pomoću sistemskog poziva wait() ili waitpid(). Do tog trenutka, zauzima minimalne resurse (praksa gotovo samo zapis u tabeli procesa), ali ne oslobađa potpuno povezane resurse.

U tabeli procesa, takav proces se obično prikazuje sa indikatorom <defunct>.

# Primer izlaza komande ps, koji prikazuje zombi 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]
...

Da bi zombi proces nestao, roditeljski proces mora pozvati wait() ili waitpid(). Ako roditeljski proces završi pre nego što pročita status svojih zombi-ćerki, one postaju deca procesa init (sa ID 1), koji automatski poziva wait() za svoju decu, čime se zombi procesi uklanjaju.

Dakle, glavni status koji proces dobija od roditeljskog procesa da bi postao zombi je status završetka, koji roditelj još nije obradio putem wait* poziva.