【发布时间】:2012-11-30 14:52:52
【问题描述】:
我有一个奇怪的问题。 我无法在我的项目中创建僵尸进程,但我可以在其他文件中执行此操作。 有简单的说明:
int main()
{
if(fork()==0)
printf("Some instructions\n");
else
{
sleep(10);
wait(0);
}
return 0;
}
这个简单的代码创建了一个 10 秒的僵尸进程。我正在检查,它确实存在。
但是,如果我将此代码复制到我的程序(我自己的 shell)中,那么像之前一样执行的所有操作,但僵尸进程根本不存在。我不知道有什么区别。这是相同的代码。
我应该知道更多信息吗? 有没有其他简单的方法来创建僵尸?
【问题讨论】:
-
我很好奇你为什么要创建一个僵尸?
-
该程序简单明了。当您将此代码复制到其中时,您的较大程序会是什么样子?
-
你有没有机会在那个更大的项目中有一个 SIGCHLD 处理程序?或以其他方式修改默认的?
-
这根本没有意义。我认为创建一个流程只是为了让它立即失效。你到底想达到什么目的?
-
在为 SIGCHLD pubs.opengroup.org/onlinepubs/009695399/functions/… 安装处理程序时忽略 SIGCHLD 信号或设置 SA_NOCLDWAIT 标志不会创建僵尸
标签: c linux bash process zombie-process