可能重复:
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();
}
上面的代码两次打印“你好”。
请有人解释这种奇怪的行为。
答案 0 :(得分:3)
不能保证以这种方式行事,但通常的行为是:用
printf("hello");
"hello"
被打印到输出缓冲区,但该缓冲区尚未刷新。
fork();
将程序状态复制到子进程,包括非空输出缓冲区。退出时,父和子的输出缓冲区都被刷新。
使用换行符,输出缓冲区在fork()
之前刷新。