1. ホーム
  2. operating-system

[解決済み] OS:プログラムによって生成されるプロセスはいくつですか?

2022-02-27 23:08:20

質問

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

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

私の質問:最初の親プロセスを含めて、プログラムによって作成されたプロセスはいくつですか?

この答えは、1+4=5 、1つの親プロセスと4つの子プロセスだと思うのですが、正しいですか?

サンクス

解決方法は?

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

このコード片は等価である。

fork();
fork();
fork();
fork();

p0から始まるプロセスがあるとします。プロセスグラフは次のようになります。

<イグ

上の画像が全てを物語っています。最初のfork()が実行されると、新しいプロセスが作成され、3つのfork()が実行されることになります。ここで、親スレッドと子スレッドが存在し、さらに3つのfork()ステートメントを実行します。そこで、子プロセス p1 が p5, p6, p7 を作成し、親プロセスが p2, p3, p4 を作成します。 p2 が生成された後、2回目の fork() を実行した後に生成されたこの子スレッド p2 に対して、さらに2回の fork() を実行する必要があります。 このようにして、親子プロセスが生成されます。