0

ループ内で発生するフォークがあり、フォークの上でユーザーの入力を求めます。私の分岐したプロセスでは、いくつかの印刷もあります。プロセスが実行される順序に保証がないため、ユーザーへのプロンプトとユーザーが情報を入力できる場所の間に、子プロセスの印刷から行が頻繁に (または常に) 表示されます。

つまり、次のようなものが得られます。

Enter info: <OUTPUT FROM CHILD>
_

(_ は、ユーザーが自由に入力できることを示します。)

親プロセスが同時に実行される多くの子プロセス (それぞれがユーザーから提供された情報に基づく) をフォークできるようにしようとしているので、子が終了するのを待ってから親を続行させることはできません。先に進む前に、子の一部が完了するのを親に待たせる方法はありますか?

4

2 に答える 2

0

実際に何をしようとしているかに大きく依存しますが、プロセスの一部が終了するのを使用しwaitpid()たりwait()、待機したりすることはできません。関数の待機ファミリは、瀕死のプロセス、またはシグナル (SIGSTOP、SIGTTIN、SIGTTOU など) によって停止されたプロセスを待機します。

いくつかの質問:

  • 子プロセスからの出力は、この混乱を招く画面に送信する必要がありますか、それともファイルに送信する必要がありますか?
  • または、子からの出力を読み取り、都合のよいときに画面の適切な部分に表示できるように、プログラムに各子からのパイプを用意する必要がありますか?
  • または、ウィンドウ環境では、子のメッセージを別のウィンドウ (コンソール ウィンドウなど) に送信する必要がありますか?
  • syslogまたは、子供たちはデーモンに書き込む必要がありますか?
  • それとも、子を SIGTTOU シグナルでハングアップさせる必要がありますか?

メッセージの目的と、メッセージをすぐに表示することの重要性に大きく依存します。

于 2013-11-03T00:50:49.643 に答える