【发布时间】:2014-02-16 11:12:02
【问题描述】:
我对 fork 有一个我不明白的问题。
#include <stdio.h>
#include <string.h>
main(){
printf("test 1.\n");
fork();
printf("test 2.\n");
}
输出是:
测试 1.
测试 2.
测试 1.
测试2。
我不应该得到... :
测试1
测试2
测试2
我真的不明白这一点,因为 fork 应该在 fork(); 之后创建子进程;并且不再打印 teste1 。
【问题讨论】:
-
如果在
fork();之前添加fflush(stdout);会发生什么? -
您缺少
unistd.h标头。 -
我在 ubuntu 机器上运行了相同的代码,并且得到了与您预期相同的输出。
-
谢谢,fflush 成功了。如果我使用 write 而不是 printf 这也可以
-
您的输出没有行缓冲?有趣...
标签: c