código de programa defectuosa conduce a menudo a procesos no terminan correctamente , lo que resulta en procesos zombies que se plantean en los programas en ejecución . El programador no ha programado un proceso principal para usar el sistema de "espera" llamar para que un proceso hijo para ejecutar de forma independiente , mientras que el padre se suspende . Esto significa que el proceso hijo no devuelve un mensaje de estado de salida a los padres cuando se termina , por lo que el padre no reciba la notificación de la resolución, y el proceso hijo se convierte en un proceso zombie.
Consideraciones
no se apresure a terminar procesos zombie , tan pronto como usted los encuentra . A veces los procesos padres dejan procesos zombies a propósito para que el mismo número de ID de proceso no se da a dos procesos separados durante la vida del programa. Si usted ve a pocos procesos zombies a la vez que no son persistentes, los procesos padre pueden llegar a terminarlos . Sin embargo , si el sistema comienza a disminuir con una gran cantidad de procesos en ejecución , terminación de un proceso zombie puede mejorar el rendimiento.
Localización Zombies
Utilizando un herramienta de comandos unix para ejecutar el comando " ps" - abreviatura de estado del proceso - lista todos los procesos que se están ejecutando en un sistema. Cualquier proceso aparece como " z " en la columna de la Estadística es un proceso zombie. Cualquiera de estos procesos que existen , mientras que el proceso padre o programa está aún en marcha es indicativo de código erróneo , mientras que los procesos de zombies corriendo sin un programa de los padres por lo general representan un error en el sistema operativo.
Matar zombies
procesos zombi
conservan los números de identificación de proceso en la tabla de entrada de proceso , por lo que tener muchos de ellos hacen porque el sistema se quede sin estos números. Sin embargo, puede forzar la terminación de los procesos zombies para liberar sus valores de ID de proceso en la tabla. Terminar ellos mediante el comando " kill- s SIGCHLD