【发布时间】:2021-10-19 15:40:51
【问题描述】:
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
int main()
{
int pid = fork();
if (pid == 0)
{
printf("I am Child\n");
exit(0);
}
printf("I am Parent\n");
while(1);
}
当我运行此代码时,我的 Linux 上会发生以下情况:僵尸进程在 htop 中显示一秒钟,然后就消失了。 我尝试在父级中设置信号处理程序:
void callback(int signum)
{
return;
}
int main()
{
int pid = fork();
if (pid == 0)
{
printf("I am Child\n");
exit(0);
}
printf("I am Parent\n");
signal(SIGCHLD, callback);
while(1);
}
但没有任何改变。为什么我的僵尸进程从 htop 中消失了?
P.S.:编译时没有优化
更新:它不会出现在htop,但会出现在top。对我来说似乎是一个错误。我投票赞成删除这个问题。
【问题讨论】:
-
尝试运行
ps | grep pts,您可能会看到。 -
@dbush 不,什么都不输出
-
ps -u <your userid> --forest也应该让僵尸脱颖而出。我希望它不会从 htop 的列表中消失,它一直在底部(并且可能被终端窗口的高度隐藏),因为它没有使用任何资源。 -
如果你在与进程不同的终端,运行
ps aux | grep <name of binary>,你应该会看到两个进程,其中一个已经失效。 -
@zwol 感谢该命令有效,僵尸显示为
。但它实际上已从 htop 消失。
标签: windows-subsystem-for-linux zombie-process waitpid htop