📜  双叉防止僵尸进程

📅  最后修改于: 2021-05-26 03:09:23             🧑  作者: Mango

我们已经讨论了三种僵尸预防方法。本文介绍了另一种僵尸预防方法。

僵尸进程:已经完成执行但仍在进程表中有条目要报告给其父进程的进程称为僵尸进程。子进程始终先成为僵尸,然后再从进程表中删除。

创建孙子/双叉如何帮助?

  1. 父级呼叫等待并创建一个子级。孩子创建孙子并退出。
  2. 孙子执行其指令(任务)并最终终止。由于孩子已经退出,孙子将在初始化过程中得到照顾。
  3. Init收集孙子的退出状态。因此,孙子不是僵尸。

注意:子级不是僵尸,父级称为“等待”。同样在这种情况下,父母不能验证孙子的退出状态。

// C program of zombie prevention by
// creating grandchild or double forking
#include 
#include 
#include 
#include 
  
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);
    }
}
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。