所以我在 C 上写了这段代码。我创建了一个父亲,它有两个子进程,其中一个变成了僵尸进程。一秒钟后它退出了,正在等他的父亲结束了。另一个子进程保持孤立状态,然后结束。我的问题是,如果我更改waitfor会发生什么waitpid。
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
int main() {
pid_t pid;
int status, value;
pid = fork();
if (pid > 0) { // Father
pid = fork();
if (pid > 0) { // Father
wait(&status);
value = WEXITSTATUS(status);
if (value == 2)
printf("Child 2");
else if (value == 3)
printf("Child 1");
} else if (pid == 0) { //Child 2 - Orphan
sleep(4);
exit(2);
} else {
exit(1);
} …Run Code Online (Sandbox Code Playgroud)