【发布时间】:2015-10-12 23:49:11
【问题描述】:
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
int main(){
int i;
for(i=0;i<2;i++){
fork();
printf("%d\n", i);
}
return(0);
}
我对 fork 的工作方式有点困惑,据我了解,fork 复制了内存,包括堆栈、堆、静态数据和文本。我以为程序会返回: 0 0 1 1 1 1 但是我编译并运行了程序,输出如下: 0 1 0 1 1 1 这是为什么呢?
【问题讨论】:
-
什么?当然顺序是不确定的,因为它们来自不同的进程。
-
你应该在你的
fork();前面加上一个fflush(NULL);并且你应该总是测试fork()的结果,因为它可能会失败