【发布时间】:2021-02-12 01:19:27
【问题描述】:
这是我的程序:
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i;
for (i=0; i < 3; i++) {
int id = fork();
if(id != 0) {
printf("This process is running under parent process \n");
}
else {
printf("This process id = %d, is a child process of parent process id = %d\n", getpid(),getppid());
}
return 0;
}
}
当它完成第一个循环时,我假设它应该打印“这个进程正在父进程下运行\n”然后点击return 0; 语句。但它似乎没有达到我的预期。
这是我的输出
This process is running under parent process
This process id = 839, is a child process of parent process id = 1
我需要解释一下。
【问题讨论】:
-
那么你实际观察到的行为是什么?
-
“第一个循环” - 反正不会有任何其他循环。
-
我认为你想要的是
return 0在else内(除非你希望子进程产生自己的子进程)然后在for之外让父进程等待所有子进程完成后再执行return 0