同じ名前の別のスレッドがあることは知っていますが、これは実際は異なる質問です。forkされたプロセスの実行順序
プロセスが複数回フォークするとき、親プロセスは子プロセスの前に実行を終了しますか?逆に?同時に?
例を示します。 1つの親プロセスを4つの子プロセスに分岐するforループがあるとします。そのforループの終わりに、私は親プロセスがいくつかのデータをパイプ経由で子供に与えることを望みます。データは各子プロセスのそれぞれの標準に書き込まれます。
子供がコードを実行する前に、親が最初にデータを送信しますか?これは重要なことです。無効な標準からの作業を開始したくないからです。
プロセスが複数回フォークするとき、親プロセスは子プロセスの前に実行を完了しますか?逆に?同時に? - 同時に、スケジューラとその予測不能に依存します。 –
子プロセスが終了して親プロセスが実行されるまで待機するにはwait関数呼び出しを使用できます –
子プロセスのパイプはどのように取得していますか?これは 'popen()'のために設計されたものではありませんか? ( 'fork()'が返った後に、2つのプロセスが存在するはずです。その時点で、あなたが入っているプロセスがあれば、完全な子プロセスが有効なstdinとstdoutで存在するはずです) – ebyrob