【发布时间】:2021-12-09 23:41:11
【问题描述】:
我的任务是创建僵尸进程。我的代码如下所示:
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
int main() {
pid_t pid = fork();
if (pid == -1) {
printf("error\n");
}
else if (pid == 0) {
printf("Child %d\n", getpid());
printf("Parents %d\n", getppid());
printf("Waiting for my Child to complete\n");
exit(0);
}
else {
sleep(5);
printf("Parent %d\n",getpid());
}
return 0;
}
当我gcc 并使用./a.out 执行文件时,我得到以下输出:
儿童 25097
家长25096
等待我的孩子完成
父级 25096(几秒钟后)
我的任务是创建一个僵尸进程并在父进程中打印出子进程的退出状态。一切都让我感到困惑,因为这是我第一次使用 Linux 和 C。
您对我有一些提示/提示,如何解决任务?因为我不确定一切是否正确。我也尝试过使用wait()、waitpid() 和WEXITSSTATUS(),但我不确定。我使用ps x 命令检查是否有不同的输出,但我没有注意到任何变化。
提前致谢:)
【问题讨论】:
-
我不确定最后一个 if{} 会发生什么。你能给我解释一下吗?
标签: c linux process command zombie-process