Java での「process.waitFor() が返らない」のトラブルシューティング
Runtime.getRuntime().exec() を使用してシステム コマンドを実行する場合を実行すると、後続の process.waitFor() の呼び出しが無期限にハングする状況が発生する可能性があります。一般的な理由と考えられる解決策は次のとおりです。
プロセス出力のブロック
この問題の主な原因は、実行されたコマンドが出力を生成し、プログラムが出力を読み取れないことです。適切なストリーム。その結果、プログラムがコマンドの完了を待機している間、コマンドはバッファー領域を待機してブロックされます。これにより、デッドロック状況が発生します。
解決策: ブロックを防ぐために、コマンドの入力ストリームから継続的に読み取ります。 BufferedReader.readLine() などのメソッドを使用して、プロセスの入力ストリームに接続された InputStreamReader からの出力を消費します。
その他の一般的な問題
追加リソース:
以上がJava `process.waitFor()` が戻らないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。