0

Ifork()の後、子はいくつかの関数呼び出しといくつかのフラグの設定を含む多くの比較を行います。親は最後まで子供を待つだけです。あるケースでは、親が子を待たせたくない (バックグラウンドで実行されている)。問題は、子がフラグを設定するのに時間がかかりすぎて、親がすでに終了していることだと思います。親プロセスと子プロセスをたどると、フラグが正しく設定されているが、親によって正しく読み取られていないことがわかります。とにかく親を失速させることはありますか?

4

2 に答える 2

0

子の pid を使用してwait(2)を使用すると、子が終了するまで親を停止できます。Dipstick が言ったように、新しいプロセスを作成する必要がない場合は、スレッドの方がよいでしょう。スレッドはプログラムをより複雑にしますが、タスクの切り替えがないため、プロセスよりもはるかに効率的です (おそらく 1000 倍)。考慮事項: Pthreads

于 2013-02-04T12:18:15.633 に答える
0

親から子をフォークすると、それらは独自のアドレス空間を持つ別のプロセスになります。そのため、変数に対して子によって行われた変更は、親には表示されません。

これら 2 つのプロセス間で通信を行うため。これらのIPCメカニズムのいずれかを使用する必要があります。子プロセスが親メモリページのスナップショットを取得するため、共有メモリアプローチがニーズに最も適していると思います。

于 2013-02-04T13:27:55.953 に答える