Bat ファイルを実行し、成功コード 0 で終了するはずの Java プログラムがあります。
コードは基本的に次のようになります
Runtime.exec(....);
System.exit(0);
99.8% の確率で、これは完全に機能します。しかし、非常に散発的に、bat ファイルが実行されません。
私の理論では、特定のシステムでは、Runtime.exec は System.exit が実行される前に生成を終了できないというものです。これは可能性がありますか?
Runtime.exec のソースを見ましたが、興味深いことを行うためにネイティブ コードに落とし込まれています。
編集
これまでの回答に基づいて、.bat ファイルは javaw. 最初の Java プロセスの終了が、bat ファイルで実行された 2 番目のプロセスを強制終了しないことを確認できます。
問題が発生したときに、System.exit が発生する前に、bat ファイルが 2 番目の Java プロセスを生成していなかった可能性はありますか? 結局、Runtime.exec の問題ではないのでしょうか?
EDIT2
2 番目のプロセスが終了するのが待ちきれません。無期限に実行される可能性があり、1 番目のプロセスを終了する必要があります。