1

誰かフォークの働きを詳しく説明してくれませんか

#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;
}

フォークが親と同じコードを持っている場合、この for ループは子プロセスの作成を停止してはならないことを知っておく必要があります (すべての子は独自の for ループを持ちます)

4

3 に答える 3

2

はい、それぞれの子はループを続けますが、ここで有効な言葉は「継続」です。変数iは最初の子に継承されてから増加し、この増加した値は 2 番目の子に継承されます。

i継承され、親プロセスから値を保持するため、子でも同じことが起こります。これは、ループがすべての子ですぐに終了することを意味します。

于 2013-09-19T09:57:07.103 に答える
0

するとfork、子プロセスは親と同じ次の命令と値を続行します。

だからそれはいつか止まるでしょう;)

同様の質問を見てください:for ループの fork

于 2013-09-19T09:59:17.447 に答える