Bifurcación doble para evitar el proceso Zombie

Hemos discutido tres métodos de prevención de zombis . Este artículo trata sobre un método más de prevención de zombis.

Proceso zombi: un proceso que ha terminado la ejecución pero aún tiene una entrada en la tabla de procesos para informar a su proceso principal se conoce como proceso zombi. Un proceso hijo siempre se convierte primero en un zombi antes de ser eliminado de la tabla de procesos.

¿Cómo ayuda la creación de un nieto/bifurcación doble?

  1. El padre llama a esperar y crea un hijo. El niño crea un nieto y sale.
  2. El nieto ejecuta su instrucción (tarea) y eventualmente termina. Como el hijo ya ha salido, el proceso de inicio se hará cargo del nieto.
  3. Init recopila el estado de salida del nieto. Por lo tanto, el nieto no es un zombi.

Nota: El niño no es un zombi como el padre llamó a esperar. También en este caso, el padre no puede verificar el estado de salida del nieto.

// C program of zombie prevention by
// creating grandchild or double forking
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/wait.h>
  
int main()
{
    pid_t pid;
  
    // fork first time
    pid = fork();
  
    if (pid == 0)
    {
        // double fork
        pid = fork();
        if (pid == 0)
            printf("Grandchild pid : %d\n Child"
               " pid : %d\n", getpid(), getppid());
    }
  
    else
    {
        wait(NULL);
        sleep(10);
    }
}

Este artículo es una contribución de Pramod Kumar . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *