Sobes.tech
Middle

Qual o estado que um processo deve obter do processo pai para se tornar um zumbi?

sobes.tech IA

Resposta da IA

O processo torna-se um zumbi ou um "processo fantasma" quando termina a sua execução (passa para o estado EXIT_ZOMBIE), mas a entrada sobre ele na tabela de processos ainda existe, esperando que o seu processo pai leia o seu estado de finalização através da chamada ao sistema wait() ou waitpid(). Até esse momento, ocupa recursos mínimos (praticamente apenas a entrada na tabela de processos), mas não liberta completamente os recursos associados.

Na tabela de processos, tal processo geralmente é exibido com o indicador <defunct>.

# Exemplo de saída do comando ps, mostrando um processo zumbi
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]
...

Para que o processo zumbi desapareça, o processo pai deve chamar wait() ou waitpid(). Se o processo pai terminar antes de ler o estado dos seus filhos zumbi, estes filhos passam a ser filhos do processo init (com ID 1), que chama automaticamente wait() para os seus processos filhos, eliminando assim os zumbis.

Assim, o estado principal que um processo recebe do processo pai para se tornar zumbi é o estado de finalização, que o pai ainda não processou através das chamadas wait*.