Sobes.tech
Middle

¿Qué estado debe obtener un proceso del proceso padre para convertirse en zombie?

sobes.tech AI

Respuesta de la IA

El proceso se convierte en un zombi o en un "proceso fantasma" cuando termina su ejecución (pasa a un estado EXIT_ZOMBIE), pero la entrada sobre él en la tabla de procesos aún existe, esperando a que su proceso padre lea su estado de finalización mediante la llamada al sistema wait() o waitpid(). Hasta ese momento, ocupa recursos mínimos (prácticamente solo la entrada en la tabla de procesos), pero no libera completamente los recursos asociados.

En la tabla de procesos, dicho proceso generalmente se muestra con el indicador <defunct>.

# Ejemplo de salida del comando ps, mostrando un proceso zombi
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 el proceso zombi desaparezca, el proceso padre debe llamar a wait() o waitpid(). Si el proceso padre termina antes de leer el estado de sus hijos zombi, estos hijos pasan a ser hijos del proceso init (con ID 1), que llama automáticamente a wait() para sus procesos hijos, eliminando así los zombis.

Por lo tanto, el estado principal que recibe un proceso del proceso padre para convertirse en zombi es el estado de finalización, que el padre aún no ha procesado mediante las llamadas wait*.