3

最初の親プロセスを含め、このプログラムが作成するプロセスの数を把握しようとしています。正解は 9 のはずなのですが、なぜ 9 なのかわかりません。この 9 つのプロセスはどのように作成されたのでしょうか。前もって感謝します!

#include <stdio.h>
#include <unistd.h>
…
int main()
{
  pid_t john;
  john = fork( );

  if (john == 0) {
      fork( ); fork( ); fork( );
  }
/* Consume resources of another process */
/* This does NOT create a new process. */
Consume( ); Consume( );

   return 0;
}
4

4 に答える 4

0

友人、私もプロセスを学んでいます。そして、関数 fork() について何かを得ました。フォークは新しい子プロセスを作成し、親プロセスからデータ、コンテンツ、スタック、ヒープなどのコピーを取得し、子プロセスは親プロセスから PCB のコピーも取得します。プログラムの実行は、プログラムの命令を含むプログラム カウンターによって制御されます。PCB には、プログラム カウンターの情報が含まれています。子と親の PCB が同じであるため、子プロセスは Program Counter の左の命令を実行するため、親プロセスでは fork 前のコードは子で実行されません。if ステートメントでは、最初の fork が実行されると、子プロセスは 2 番目と 3 番目の fork のみを実行します。これを使用して、この質問を解決するのに役立つプロセス図を描くことができます.このように.申し訳ありません. あなたのために画像を投稿するのに十分な評判がありません。私の言葉がお役に立てば幸いです。

于 2013-11-20T16:34:32.430 に答える