[解決済み] process.waitFor()が返らない
2022-10-22 13:23:41
質問
Process process = Runtime.getRuntime().exec("tasklist");
BufferedReader reader =
new BufferedReader(new InputStreamReader(process.getInputStream()));
process.waitFor();
どのように解決するのですか?
多くの理由で
waitFor()
が返らない理由はたくさんあります。
しかし、通常は実行されたコマンドが終了しないことに帰着します。
これもまた、多くの理由があります。
よくある理由の1つは、プロセスが何らかの出力を生成し、適切なストリームから読み込まないことです。これは、バッファが一杯になるとすぐにプロセスがブロックされ、自分のプロセスが読み取りを続けるのを待つことを意味します。あなたのプロセスは、今度は他のプロセスが終了するのを待ちます(あなたのプロセスを待っているので、終了しませんが・・・)。これは古典的なデッドロックの状況です。
ブロックしないように、プロセスの入力ストリームから継続的に読み取る必要があります。
の落とし穴をすべて説明した素晴らしい記事があります。
Runtime.exec()
の落とし穴をすべて説明し、それを回避する方法を示した
"Runtime.exec()が実行されない場合"
(そう、この記事は2000年のものですが、内容はまだ適用できます!)
関連
-
Eclipse問題 アクセス制限。タイプ 'SunJCE' が API でないことを解決し、/jdk ディレクトリにある /jre と jre の違いについて理解を深める。
-
アクセス制限です。タイプ 'JPEGCodec' は API ではない ☞My Blog Github ☜ ホームページを見る
-
CertificateException: XXXに一致するサブジェクトの代替DNS名が見つかりません 解決策
-
Java Runtime Environmentを継続するためのメモリが不足しています。
-
Java の double データ型における 0.0 と -0.0 の問題
-
linux ant Resolve error: main class not found or couldn't be loaded org.apache.tools.ant.launcher.
-
swagger2 モデルが表示されない モデルが見つからない @ApiModel アノテーションが表示されない問題
-
[解決済み] IntelliJ: ワイルドカード・インポートを使用しない
-
[解決済み] Androidでインターネット接続を確認するには?InetAddressがタイムアウトしない
-
[解決済み] Runtime.getRuntime().totalMemory()とfreeMemory()とは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Eclipseは、ポップアップA Java Exception has occurred.を実行し、エラーException in threadの解決策を報告します。
-
強制型変換について
-
Junitのユニットテストはjava.lang.Testを報告します。
-
List list = new ArrayList(); Error: ArrayList は型に解決できません。
-
X11 DISPLAY変数が設定されていない」問題の解決方法
-
Junitのユニットテストエラー
-
Server Tomcat v9.0 Server at localhost の起動に失敗しました。
-
コンストラクタDate()が未定義である問題
-
ecplise プロンプトが表示されます。"選択したものは起動できません。" "最近の起動はありません。"
-
org.xml.sax.SAXParseExceptionのエラー解決方法