0

わかりました、だから私はこれをstackoverflow全体で見ていて、間違いなく30分ほどグーグルで調べてきましたが、私が得た答えは私が実際にやりたいこととはほとんど関係がないようです。誰かがこれについて私を助けてくれることを願っています1つ、コードは次のとおりです。

int cCount = 0;

while(cCount < 2)
{
    switch(fork())
    {
    case 0:
    cCount++;
    break;

    case -1:
    printf("Failed");
    break;

    default:
    break;
    }
}

return;

発生する質問のために、このコードは 3 つのレベル (0,1,2) を持つツリーを作成すると想定しています。

0 は、フォークを開始するプライマリ親です

1 は 0 の親の 2 つの子です

2 は 1 で 2 人の親の 4 人の子供です

対称ツリーの作成。基本的に、いくつか質問がありますが:

  1. Switch はすべてのループで fork を実行するため、理論的には fork > 0 の場合でも fork されて親のサブ子を作成し、ループが続行されるため、親-親-親-親のチェーンになる可能性があります。親ごとに 2 人の子供の代わりに、2 人に 4 人など。

  2. たとえば、最後のレイヤー (レベル) にもう 1 つの子が関連付けられているツリーを作成したいとします。どのように開始すればよいでしょうか?

フォークを正しく理解していますか? そうでない場合は説明してください。ネット上には非常に多くのチュートリアルがありますが、それらはすべて、実際よりもはるかに複雑になっているようです。

乾杯、ありがとう そして、私に親切にしてください、英語は私の母国語ではありません。

4

1 に答える 1

0

このコードは基本的に爆弾をフォークします。その理由は次のとおりです。

プロセスが最初forkの に到達すると、子には 0 が返され、親には正の数 (子の PID) が返されます。したがって、親のインスタンスはcCountインクリメントされないため、ループは永久に実行されます。

于 2013-06-27T21:09:11.470 に答える