Ce statut trebuie să obțină un proces de la procesul părinte pentru a deveni zombie?
sobes.tech AI
Răspuns de la AI
Procesul devine un zombie sau un "proces fantomă" atunci când își încheie execuția (trece în starea EXIT_ZOMBIE), dar înregistrarea despre el în tabelul de procese încă există, așteptând ca procesul părinte să citească starea sa de finalizare prin apelul sistemic wait() sau waitpid(). Până în acel moment, ocupă resurse minime (aproape doar înregistrarea în tabelul de procese), dar nu eliberează complet resursele asociate.
În tabelul de procese, un astfel de proces este de obicei afișat cu indicatorul <defunct>.
# Exemplu de ieșire a comenzii ps, care arată un proces zombie
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]
...
Pentru ca procesul zombie să dispară, procesul părinte trebuie să apeleze wait() sau waitpid(). Dacă procesul părinte se termină înainte de a citi starea copiilor săi zombie, aceștia devin copii ai procesului init (cu ID 1), care apelează automat wait() pentru copiii săi, eliminând astfel zombie-ii.
Astfel, principalul statut pe care îl primește un proces de la procesul părinte pentru a deveni zombie este starea de finalizare, pe care părintele încă nu a procesat-o prin apelurile wait*.