C - 无法在 Linux 中创建僵尸进程



好吧,我有奇怪的问题。我无法在我的项目中创建僵尸进程,但我可以在其他文件中执行此操作。有简单的说明:

int main()
{
    if(fork()==0)
        printf("Some instructionsn");
    else
    {
        sleep(10);
        wait(0);
    }
    return 0;
}

这个简单的代码创建一个僵尸进程 10 秒。我正在检查,它确实存在。

但是如果我将此代码复制到我的程序(我自己的 shell)中,则像以前一样执行的所有内容 BUT 僵尸进程根本不存在。我不知道有什么区别。这是相同的代码。

我应该知道的更多信息吗?有没有其他方法可以简单地创建僵尸?

试试这个python脚本:

#!/usr/bin/python
# -*- coding: utf8 -*-
import subprocess
import time
import threading
# Create 100 subprocesses 
proc = {}
for i in xrange(0,1000):
        proc[i] = subprocess.Popen(['ls','-l'])
# create zombies from this processes, observe one minute zombies
time.sleep(60)
# Zombies dead
proc.communicate()
time.sleep(5)

此后检查僵尸:

# ps -A | grep defunc
14711 pts/49   00:00:00 ls <defunct>
14713 pts/49   00:00:00 ls <defunct>
14716 pts/49   00:00:00 ls <defunct>
.... 
14740 pts/49   00:00:00 ls <defunct>
14741 pts/49   00:00:00 ls <defunct>
14742 pts/49   00:00:00 ls <defunct>
14743 pts/49   00:00:00 ls <defunct>
14746 pts/49   00:00:00 ls <defunct>
14749 pts/49   00:00:00 ls <defunct>
....
14805 pts/49   00:00:00 ls <defunct>
14806 pts/49   00:00:00 ls <defunct>

或 C:

#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main ()
{ 
  pid_t child_pid;
  child_pid = fork ();
  if (child_pid > 0) {
    sleep (60);
  }
  else {
    exit (0);
  }
  return 0;
}

应该像魅力一样工作,像水晶般清澈的纯海地伏都教。

相关内容

  • 没有找到相关文章

最新更新