C 子进程是否同时执行这两个打印?

C 子进程是否同时执行这两个打印?,c,operating-system,fork,parent-child,C,Operating System,Fork,Parent Child,输出是什么?我很困惑,是2还是3,但我不确定是哪一个。你能帮忙吗 main() { printf("hello\n"); if(fork() == 0) printf("hello\n"); } 如果要在分叉后对语句求值,则每个进程都会使用自己的返回值运行它,子进程的返回值为零,父进程的返回值为非零(PID),因此此时将有1个hello 加上第一个hello在代码顶部,您在终端总共得到2个hellos。您发现了什么?当您通过管道将输出通过cat,或将其重定向

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

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

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

如果要在分叉后对
语句求值,则每个进程都会使用自己的返回值运行它,子进程的返回值为零,父进程的返回值为非零(PID),因此此时将有1个
hello


加上第一个
hello
在代码顶部,您在终端总共得到2个
hello
s。

您发现了什么?当您通过管道将输出通过
cat
,或将其重定向到一个文件时会发生什么?为什么人们会将代码剪切并粘贴到一个SO问题中,而不是粘贴到他们选择的编辑器中,并编译&*^%$东西以获得可靠的答案!虽然他关心的是
为什么
代码的行为如此,但他是受欢迎的。@Xaqron没有。问题是“输出会是什么”。@John3136:然后他可以简单地将它粘贴到`GCC`而不是
so
,并得到结果。