【问题标题】:Fork Program Output分叉程序输出
【发布时间】: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() 的结果,因为它可能会失败

标签: c process fork


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    fork同时返回两次,即同时

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-07
      • 1970-01-01
      • 2011-06-12
      • 1970-01-01
      • 2011-06-29
      • 2021-07-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多