2011-08-20 12 views
0

私はProcessBuilderを使用して、ファイルシステムにデータを書き込むための子プロセスを起動します。親プロセスが予期せずクラッシュ/強制終了する可能性があるため、問題が発生します。 jps親プロセスが終了して終了するかどうかを確認して終了します。産んだ子プロセスが親プロセスが停止して終了するかどうかを検出する正しい方法は何ですか?シャットダウンで正常にJava子プロセスが生成される

また、インターネットで検索した結果、ほとんどのソリューションはRuntime.addShutdownHook()を使用していますが、これはProcessBuilderには記載されていません。同等のものはありますか?

答えて

1

問題を回避するために適切な検索を行いました。したがって、あなたが言及したProcessインスタンスとRuntime.addShutdownHook(Thread)メソッドに返された参照を使用することができます。


List commands = new ArrayList(); 
commands.add("xeyes"); // launch this command 
ProcessBuilder pb = new ProcessBuilder(commands); 
final Process p = pb.start(); 
Runtime.getRuntime().addShutdownHook(new Thread() { 
    @Override 
    public void run() { 
    p.destroy(); 
    } 
}); 

Thread.sleep(2000); // sleep for some time 
0

私は親プロセスが定期的にハートビートを送信しなければならなかったハートビート・メカニズムを実装似たような状況で:これは、私はあなたが取る必要があると信じて最後のステップです。それが起こらなかった場合、子プロセスはそれ自体をシャットダウンします。

関連する問題