C 如何在Linux内核中创建多个僵尸?

C 如何在Linux内核中创建多个僵尸?,c,zombie-process,C,Zombie Process,我正在为一个类编写一个项目,该类在Linux内核中查找僵尸并获取它们 我找到了创建一个僵尸的代码,它在等待()后收获,但我的程序必须收获很多,大约1000个 我对内核操作/多线程非常陌生,我在网上找到的关于僵尸的资源要么太技术化,要么模棱两可 这是我正在使用的代码: pid_t child_pid; child_pid = fork (); if (child_pid > 0) { sleep (60); } else

我正在为一个类编写一个项目,该类在Linux内核中查找僵尸并获取它们

我找到了创建一个僵尸的代码,它在等待()后收获,但我的程序必须收获很多,大约1000个

我对内核操作/多线程非常陌生,我在网上找到的关于僵尸的资源要么太技术化,要么模棱两可

这是我正在使用的代码:

      pid_t child_pid;

      child_pid = fork ();
      if (child_pid > 0) {
          sleep (60);
      } else {
          exit (0);
      }
再一次,我的问题是:我应该如何创建多个僵尸,让我的程序收获


非常感谢-Jared

僵尸不过是一个终止的进程,其父进程没有读取其退出状态(简而言之:父进程在子进程退出后没有调用
wait()
),并使内存和资源处于繁忙状态


要实现您需要的功能,只需分叉许多进程(例如使用循环),并且从不调用
wait()

,您成功地创建了一个。重复你刚才在退出前所做的,你会得到两个。在循环中这样做,你会得到你想要的任何数量。难道你没有某种Do_exit方法吗?这应该将您的进程标记为清理,并在所有进程的线程退出时调用。就像我在另一个问题上说的,有什么意义?想要创建僵尸进程的人怎么了?@Mat这不太管用。我将第3-8行放在for循环中,但由于睡眠的原因,它一次只能创建一个for循环。我试着让它睡觉,程序退出,然后收起僵尸。@Jared:嗯,你没有按我说的做。尝试先创建两个僵尸(没有循环),然后创建三个僵尸,然后查看模式?明白了,fork语句是循环中应该包含的唯一一行。谢谢^^