-2

可能重复:
linux gcc 中 fork() 的工作
为什么这段代码打印两次?

#include<stdio.h>
main()
{

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

}

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

#include<stdio.h>
main()
{

 printf("hello");
 fork();

}

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

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

4

1 回答 1

3

不能保证以这种方式运行,但通常的行为是:

printf("hello");

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

fork();

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

使用换行符,输出缓冲区在fork().

于 2012-10-19T13:36:42.247 回答