分叉程序输出
Fork Program Output
#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 复制了内存,包括堆栈、堆、静态数据和文本。我认为该程序会 return:
0
0
1个
1个
1个
1个
但是我编译了 运行 程序,输出如下:
0
1个
0
1个
1个
1个
这是为什么?
fork
returns两次并发,即同时.
输出将是随机的,因为最终答案取决于哪个过程在哪个时间完成。
#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 复制了内存,包括堆栈、堆、静态数据和文本。我认为该程序会 return: 0 0 1个 1个 1个 1个 但是我编译了 运行 程序,输出如下: 0 1个 0 1个 1个 1个 这是为什么?
fork
returns两次并发,即同时.
输出将是随机的,因为最终答案取决于哪个过程在哪个时间完成。