【问题标题】:Does child process execute both prints? [duplicate]子进程是否执行两个打印? [复制]
【发布时间】:2017-10-21 12:48:21
【问题描述】:

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

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

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

【问题讨论】:

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

标签: c operating-system fork parent-child


【解决方案1】:

if 语句将在分叉后进行评估,因此每个进程都将使用自己的返回值运行它,子进程为零,父进程为非零 (PID),因此此时将有 1 hello .

加上代码顶部的第一个hello,您将在终端获得总共2个hellos。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    • 2016-05-09
    • 1970-01-01
    相关资源
    最近更新 更多