叉程序输出

时间:2015-10-12 23:49:11

标签: c process fork

#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 这是为什么?

2 个答案:

答案 0 :(得分:3)

fork两次同时返回,即同时

答案 1 :(得分:3)

输出将是随机的,因为最终答案取决于哪个过程在哪个时间完成。

相关问题