所以我正在尝试学习fork()调用,我真的很困惑这个子进程和父进程是如何工作的。以下是代码的一部分:
int main()
{
pid_t pid;
pid = fork();
if (pid == 0) {
value = ChildProcess(value);
return 0;
}
else if (pid > 0) {
value = ParentProcess(value);
}
printf("\nThe value is %d",value);
return 0;
}
现在输出应该给我父值和子值,并且因为没有wait()调用,所以可以先打印父值或子值。但令我困惑的是,为什么printf语句只打印一次?因为fork调用基本上创建了一个重复的程序,所以不应该打印两次吗?
答案 0 :(得分:2)
因为您在调用ChildProcess后从子进程返回,所以不要通过printf