Esta web utiliza cookies, puedes ver nuestra política de cookies, aquí Si continuas navegando estás aceptándola

El alzar de los zombies ha llegado


En Linux hay ocasiones en las que un proceso termina en estado de zombie, esto es debido a que el proceso hijo ha terminado su ejecución pero el padre encargado de monitorizar el estado de su hijo no lo está haciendo,

Podemos compilar un sencillo programa que hace precisamente esto:

vi zombie.c

#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>

int main ()
{
  pid_t child_pid;

  child_pid = fork ();
  if (child_pid > 0) {
    sleep (60);
  }
  else {
    exit (0);
  }
  return 0;
}

 

Este programita crea un proceso hijo mediante el fork, espera 60 segundos, es durante este periodo en el que el padre está en sleep por lo tanto no sabe nada de sus hijos y el proceso del fork está en estado zombie.

 

cc zombie.c -o zombie

./zombie

 

ps aux|grep zombie

XX     21646  0.0  0.0      0     0 pts/0    Z+   11:36   0:00 [zombie] <defunct>

 

Podemos comprobar que no es posible matarlo:

kill -9 21646

ps aux|grep zombie

XX     21646  0.0  0.0      0     0 pts/0    Z+   11:36   0:00 [zombie] <defunct>

 

Primero debemos localizar a su padre:

cat /proc/21646/stat|awk -F " " '{print$4}'

21645

 

Acabamos con el padre:

kill -9 21645

 

Con esto nos habremos deshecho del proceso zombie ;)


Autor: Kr0m -- 28/02/2014 11:02:53