2

fork()とexecvp()の呼び出しを使用して複数のプロセスを作成しようとしていますが、これまでのところ失敗しています。これが私がやろうとしていることです:

プロセスA、B、Cは同時に実行する必要があります。それらが終了したら、プロセスDを実行する必要があります。完了すると、プロセスEとFが実行されます。

プログラム名とその引数を渡すことでexecvp()を正常に呼び出すことができますが、fork()を何回呼び出す必要があるのか​​どこで呼び出すのかわかりません。wait()の呼び出し方法も知っていますが、どこで呼び出すべきかわかりません。

どうすればいいですか?

4

1 に答える 1

0

私は次の方法でこれにアプローチします:

  1. メインプログラムが開始します->fork()プロセスA、完了までwait()
  2. プロセスAが開始します->fork()プロセスB、コードを実行し、プロセスBの完了を待ちます()
  3. プロセスBが開始します->fork()プロセスC、コードを実行し、プロセスCの完了を待ちます()
  4. プロセスCが開始->コードを実行し、プロセスBに戻ります
  5. プロセスBはプロセスAに戻ります
  6. プロセスAがメインプログラムに戻る
  7. メインプログラムは引き続き実行され、プロセスDルーチンを呼び出します(フォークなし)
  8. メインプログラム->fork()プロセスE、完了までwait()
  9. プロセスEが開始します->fork()プロセスF、コードを実行し、プロセスFが完了するまでwait()
  10. プロセスFが開始->コードを実行し、プロセスEに戻ります
  11. プロセスEはメインプログラムに戻ります
于 2011-02-16T11:53:32.470 に答える