子进程是否执行两个打印?

时间:2017-05-22 00:26:07

标签: c operating-system fork parent-child

输出是什么?我很困惑,它是2或3,但我不确定哪一个。你能帮忙吗?

main() 
{
    printf("hello\n");

    if(fork() == 0)
        printf("hello\n");
}

1 个答案:

答案 0 :(得分:2)

if语句将在分叉后进行评估,因此每个进程都会使用它自己的返回值运行它,对于子进程为零,对于父进程为非零(PID),因此会有1 {{1}在这一点上。

再加上代码顶部的第一个hello,终端总共会有hello个。{/ p>