运行叉和打印你好

时间:2012-10-19 13:27:58

标签: c operating-system fork

  

可能重复:
  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();

}

上面的代码两次打印“你好”。

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

1 个答案:

答案 0 :(得分:3)

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

printf("hello");

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

然后
fork();

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

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