We have discussed Three methods of Zombie Prevention. This article is about one more method of zombie prevention.
Zombie Process: A process which has finished the execution but still has entry in the process table to report to its parent process is known as a zombie process. A child process always first becomes a zombie before being removed from the process table.
How Creating a Grandchild / Double Forking helps?
- The parent calls wait and creates a child. The child creates a grandchild and exits.
- The grandchild executes its instruction(task) and eventually it terminates. As the child has already exited, the grandchild will be taken care by init process.
- Init collect the exit status of grandchild. Hence the grandchild is not a zombie.
Note: Child is not a zombie as the parent called wait. Also in this case, the parent cannot verify the exit status of grandchild.
// 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);
}
} |
Article Tags :
Recommended Articles