【问题标题】:Running fork and printing hello [duplicate]运行 fork 并打印 hello [重复]
【发布时间】:2012-10-10 03:08:19
【问题描述】:

可能重复:
Working of fork() in linux gcc
Why does this code print two times?

#include<stdio.h>
main()
{

 printf("hello\n");
 fork();

}

上面的代码打印了一次“hello”。下面的代码打印了两次“hello”。

#include<stdio.h>
main()
{

 printf("hello");
 fork();

}

上面的代码打印了两次“hello”。

请有人解释一下这种奇怪的行为。

【问题讨论】:

  • 这已经被问过多次了。请使用搜索功能..
  • 如果你使用 "\nhello\n" 会发生什么?
  • 输出缓冲区被复制到孩子,没有换行符不为空。

标签: c operating-system fork


【解决方案1】:

不保证会以这种方式表现,但通常的表现是:With

printf("hello");

"hello" 被打印到输出缓冲区,但该缓冲区尚未刷新。然后在

fork();

程序状态被复制到子进程,包括非空输出缓冲区。退出时,父母和孩子的输出缓冲区都被刷新。

使用换行符,在fork() 之前刷新输出缓冲区。

【讨论】:

    猜你喜欢
    • 2014-06-04
    • 2012-05-28
    • 2018-08-10
    • 1970-01-01
    • 2017-02-14
    • 1970-01-01
    • 2015-02-14
    • 2016-03-26
    • 2015-05-28
    相关资源
    最近更新 更多