有人能详细解释一下我用叉子干什么的吗

#include<unistd.h>
#include<stdio.h>
int main ()
{
  int i, b;
  for (i = 0; i < 2; i++) {
    fflush (stdout);
    b = fork ();
    if (b == -1) {
      perror ("error forking");
    }
    else if (b > 0)             //parent process
    {
      wait ();
      printf ("\nparent %d", getpid ());
    }
    else
      printf ("\nchild %d %d", getpid (), getppid ());
  }
  return 0;
}

我只需要知道,如果fork和parent有相同的代码,那么这个for循环永远不会停止创建子进程(每个子进程都有自己的for循环)

最佳答案

是的,每个孩子都会继续循环,但这里的关键词是“继续”。变量i将由第一个子继承,然后增加,增加的值由第二个子继承,等等。
同样的情况也会发生在子进程中,因为i是继承的,并且保留父进程的值。这意味着循环很快就会在所有的孩子身上结束。

09-11 17:46
查看更多