2012-04-02 32 views
3

現在、各要求に対して複数の子プロセスが必要な親プロセスを伝えようとしていますが、どのように子プロセスの数を追跡し、終了しましたか?親プロセスと複数の子プロセス間の通信

私は、read()関数を使用して通信のパイプを使用して終了メッセージを返そうとしました。しかし、これは何とかすべての並行性をブロックし、次のプロセス要求を処理する前に1人の子が完了して終了メッセージを返すのを待ちます。

これを解決する方法はありますか?または、共有メモリ、ソケットなどのメソッドを使用する必要がありますか?

私はC言語を使用しています。子供の数を追跡する方法が必要です。私は親プロセスのカウンタをインクリメントすることができますが、子供が死んだときは?そのメッセージを元に戻し、それを使って親のカウンターを減らしますか?

+0

どの言語やフレームワークを使用していますか? –

+0

どの程度の情報を伝達する必要がありますか?双方向のコミュニケーションですか? – wallyk

答えて

2

POSIX準拠のプラットフォームでは、子プロセスがいつ終了するかを知りたければ、シグナルを使用できます。
SIGCHLDは、子プロセスが終了したときにプロセスに送信されるシグナルです。独自のシグナルハンドラを記述することで処理できます。その戻り値は、終了する子プロセスのプロセスIDです。

あなたは、プログラム実行の過程で定期的に親と子プロセス間で通信する必要があるならば、あなたはInter Process Mechanism(IPC)のいくつかの並べ替えを使用する必要があります、パフォーマンスのような多くの要因に依存かの選択の必要性同期、シリアル通信などが必要です。

関連する問題