C++ 如何创建几分钟内无法收获的僵尸进程

C++ 如何创建几分钟内无法收获的僵尸进程,c++,c,linux,zombie-process,C++,C,Linux,Zombie Process,有人能给我一个简单的方法来创建一个几分钟内都无法收获的僵尸进程吗。 这样做的目的是测试父进程是否能够在僵尸进程再次可收获后收获它们 可以找到一个不可回收僵尸的案例。我想可能有更简单的方法 操作系统:Linux 更好的语言:C/C++这里有一个小程序,它会让一个僵尸在ps aux输出中出现几分钟。注意注释掉的waitpid调用;如果取消对该调用的注释,僵尸将不会出现,因为waitpid调用会导致父进程声明其死子进程 免责声明:我只在MacOS/X下测试了这个,因为这是我所在的计算机,但它在Linu

有人能给我一个简单的方法来创建一个几分钟内都无法收获的僵尸进程吗。 这样做的目的是测试父进程是否能够在僵尸进程再次可收获后收获它们

可以找到一个不可回收僵尸的案例。我想可能有更简单的方法

操作系统:Linux


更好的语言:C/C++

这里有一个小程序,它会让一个僵尸在ps aux输出中出现几分钟。注意注释掉的waitpid调用;如果取消对该调用的注释,僵尸将不会出现,因为waitpid调用会导致父进程声明其死子进程

免责声明:我只在MacOS/X下测试了这个,因为这是我所在的计算机,但它在Linux下应该也能工作

#include <stdio.h>
#include <signal.h>
#include <pthread.h>
#include <sys/wait.h>
#include <unistd.h>

int main()
{
   printf("Starting Program!\n");

   int pid = fork();
   if (pid == 0)
   {
      printf("Child process %i is running!\n", getpid());
      sleep(300);  // wait 5 minutes
      printf("Child process %i is exiting!\n", getpid());
      return 0;
   }
   else if (pid > 0)
   {
      printf("Parent process is continuing child's pid is %i...\n", pid);
      sleep(5);  // just for clarity
      printf("Parent process is sending SIGKILL to child process...\n");
      if (kill(pid, SIGKILL) != 0) perror("kill");
      // waitpid(pid, NULL, 0);  // uncomment this to avoid zombie child process

      printf("Parent process is sleeping... ps aux should show process #%i is a zombie now\n", pid);
      sleep(500);  // just for clarity
      printf("Parent process is exiting!\n");
   }
   else perror("fork()");
}

定义僵尸进程?否则,你也可以做一个过程,这样做是永恒的@Surt我认为tag完美地定义了这些野兽:在过度设计之前,你不能先开始一个线程,然后再不加入它吗?或者这不算数吗?@Surt好吧,我想测试父进程而不更改其代码。它确实在等待孩子们。选民会评论它的投票吗?因为我认为这个问题没有错,谢谢你的回答。虽然正如我提到的,我需要一个在一段时间内无法收割的僵尸。你得到僵尸是因为你没有收获它——这是另一种情况