-3

1 つだけ質問があります。fork() すると、親プロセスと子プロセスが作成されました。子がまだ実行されている間に親を終了することは可能ですか?

この図の基本ですか?fork と exec の違い

if(!fork())
{
  //child
  while(1);
}
else
{
  //parent
  exit();
}

別のシナリオは、私の子供が終了した場合です。私の親はメインから戻り値を受け取ることができますか? はいの場合、値を取得するにはどうすればよいですか?

exec と execlp の違いは何ですか?

最後に、実行するとメモリ(ヒープ、スタック、テキスト、データ)が上書きされることを理解しています。基本的に、 new .exe を呼び出します。しかし、PCBの下で?状態とspがすべて上書きされている間、PID、PPIDのみが残りますか?

4

1 に答える 1

1

するとfork、完全に新しい別のプロセスが作成されます。子は、開いているファイル記述子などの特定の側面を継承します。したがって、親を終了しても、子は引き続き実行されます。

pid_t waitpid(pid_t pid, int *status, int options);子の終了コードとステータスを取得するには、それに応じてステータスを使用および解釈できます。実際、Zombiprocesses を回避するには、とにかく子プロセスを待機する必要があります。

このexecファミリは、現在実行中のプロセス内に新しい実行可能ファイルを作成するため、PID は残りますが、実行状態は初期化されます。

于 2013-06-23T11:14:14.220 に答える