Possible Duplicate:
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”两次。
请有人解释一下这种奇怪的行为。
最佳答案
不保证会以这种方式表现,但通常的行为是:与
printf("hello");
“hello”
被打印到输出缓冲区,但该缓冲区尚未刷新。然后在
fork();
程序状态被复制到子进程,包括非空输出缓冲区。退出时,父级和子级的输出缓冲区都会被刷新。
使用换行符时,输出缓冲区会在 fork()
之前刷新。
关于c - 运行 fork 并打印 hello,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12975312/