I午前次のコード所与:並行プロセス()
main()
{
int i, rc;
for (i = 0; i<=1; i++)
{
if((rc=fork()) == 0)
{
printf("Child %d executing\n",i);
} /*end if*/
} /*end for*/
}
printf("All children created\n");
Iはまた、出力が起こり得るの可能な順列の溶液を与えられています。
子0実行中|
子1実行中|子供1 すべての子供を作成|
子1実行中|子供2 すべての子供が作成されました|
子1実行中|グランド子供 すべての子供を作成|
すべての子供|親
私はこれらの出力は、各プロセスによって作成されていることを知っているが、私はちょうど彼らがHOWこれらの出力が発生理解するためにトレーストラブルを抱えています。私が知っているfork()
はプロセスを作成し、if (fork() == 0)
はそれが子プロセスであることを意味しますが、それ以外のところで誰かが私の理解を助けることができたら子0実行|ありがとうございます。私は|どのプロセスが現在実行されているかの説明です。どのようにchild 1
は "壮大な子供"を作成することができますが、子供0はできませんか?
"出力が発生する可能性のある並べ替え"を置き換えるために質問を編集してください。それに続く引用ブロックが何であるかを明確に説明してください。 (これは、プロセスの出力とラベル付けの何らかの文字化けであり、ラベル付け中のプロセスの名前は説明されていません)(また、「Child 1 execution」は2回出力されます)。 – philipxy