2017-09-24 1 views
-2

マスターとスレーブがあるプログラムを実行するために、繰り返し実行できるX個のプロセスを実行したいと思っていますマスターの命令を受けて文字列を返します。複数のフォークされたプロセスを実行し、常にスタンダードに標準出力しています。

私はC言語で書いています。私は標準の入出力を読み込むプロセスをパイプとフォークの間でどのように設定することができるのだろうかと思います。私は現在、殺されるまで一度に一つずつ働かせることができますが、ただ一つの行を読んで次のプロセスに移りたいのです。どんな助け?

+0

'poll()'システムコールの使い方については、本の章をお読みください。 –

答えて

0

一般に、このようなプログラミングの一般的な戦略は、イベントループを設定することです。 パイプをセットアップし、プログラムのstdinとstdoutに接続します。 使用している言語は指定していません。 Cでは、読み込み用と書き込み用の2つのパイプを作成します。 それからあなたはフォークします。フォークの後、子プロセスでstdinとstdoutを閉じ、dup2システムコールを使用して、pipe filedescriptorsの一端を子にコピーします。

親プロセスでは、各プロセスをイベントループに接続します。これにより、FDの読み取りまたは書き込みの準備が整ったことを知ることができます。

パイプとdup2の使用については、class notesを参照してください。ここで

は、一般的なイベントの一つは、あなたが似た何かをするだろう、他の言語についてはC.

用ループ、libeventの紹介です。たとえば、Pythonの場合、サブプロセスのサポートasyncioを見てください。

+0

申し訳ありませんええ、私の言語としてCがダウンしましたが、そこのNeilは自分のタグを編集しました。私はイベントループを見ていきますが、助けてくれてありがとう:) – lighthou

関連する問題