确定fork()创建的子进程数

时间:2018-02-21 15:56:52

标签: c linux

我们在C中有这个代码,它会创建子进程。

问题是创建了多少个进程? 我计算了8个流程,我的朋友12.谁是对的?

#include <stdio.h>
#include <unistd.h>

int main() {
    int i;

  for ( i = 0 ; i < 4 ; i++ ) {
      fork();
  }

  return 0;
}

我的假设是堆栈从父级复制到子级,并且每个子级都在父级代码停止的同一位恢复父级代码。

1 个答案:

答案 0 :(得分:0)

由于fork()在子进程中返回0,通过为fork()创建的每个子进程打印一行,您只需计算创建的子进程数: / p>

for (i = 0; i < 4; i++) {
    if (!fork()) {
        printf("child created\n");
        fflush(stdout);
    }
}