分叉程序输出

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

forkreturns两次并发,即同时.

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