【发布时间】:2020-12-04 05:03:43
【问题描述】:
我目前正在尝试创建 2 个子进程,每个子进程都会打印一些东西,问题是其中一个进程会打印两次“printf”指令。 这是代码:
#include <stdio.h>
#include <unistd.h>
int main(void)
{
pid_t childPid[2];
if((childPid[0] = fork()) == 0)
printf("Hello I'm process one\n");
if((childPid[1] = fork()) == 0)
printf("Hello I'm process two\n");
return 0;
}
这是编译运行后的结果:
Hello I'm process one
Hello I'm process two
Hello I'm process two
请解释为什么第二个过程执行了两次。
【问题讨论】:
-
您的编码方式导致第一个孩子也调用
fork。因此,您正在创建两个以上的子进程。 -
OT:函数:
fork()返回3种信息:0表示在父进程中。您的代码应该检查所有 3 个条件