fork()之后的printf()和条件只打印一次?

时间:2016-09-06 15:05:32

标签: linux fork

所以我正在尝试学习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调用基本上创建了一个重复的程序,所以不应该打印两次吗?

1 个答案:

答案 0 :(得分:2)

因为您在调用ChildProcess后从子进程返回,所以不要通过printf