子プロセスが親プロセスに準備信号を送信する安定した方法はありますか? [閉鎖]

子プロセスが親プロセスに準備信号を送信する安定した方法はありますか? [閉鎖]

別のプロセスを開始する(Java)プロセスがありますfoofoo起動して実際に実行するのに数秒かかります。制御権は開始されるとすぐに親プロセスに戻りますが、foo必ずしも準備されていません。

また、デバッグモードでは、foo人間が読み取ることができる出力がおよびに書き込まれます。stdoutstderr

私が知っているオプション:

  1. sleep親プロセスは理論的には以前よりもn数秒かかります。nfoo
  2. stdout親プロセスが子プロセスで特別なものを見つけ、stderrそれが見つかるまでブロックします。
  3. 準備ができたら、オペレーティングシステムで一種のフラグファイルをタッチし、親プロセスがファイルをfoo監視できるようにします。

私はこれらのオプションのどれも本当に気に入りません(1.競争条件があり、2.マジックストリングマッチングに関連する、3.複数のプロセスがfooクラッシュする危険性があります)。別の方法(親プロセスから子プロセスへ)にシグナルを送信して通信できますが、子プロセスが自分の状態を親プロセスに渡すより良い方法がわかりません。

ベストアンサー1

子供たちは両親に信号を送ることができます。SIGUSR1そしてSIGUSR2これのために存在するアドホックここでは状況が理想的かもしれません。

アプリケーションは、対応するJavaコードを使用して親プロセスIDを簡単に見つけることができますgetppid()。あるいは、親プロセスが$$コマンドラインから独自のPID(PID)をJavaコードが取得できるパラメータとして渡すこともできます。

おすすめ記事