※ ChatGPTを利用し、要約された質問です(原文:Javaで外部コマンドの実行した結果の取得)
Javaで外部コマンドの実行した結果の取得
このQ&Aのポイント
Javaで外部コマンドを実行する方法とその結果を取得する方法について説明します。
Eclipse上でJavaのプログラムを作成し、外部コマンドを実行した結果を取得しようとした際に起きる不思議な現象について解説します。
ブレークポイントを使用してコードをデバッグすることで問題が解決する方法を説明します。
Javaで外部コマンドを実行してその結果を取得しようとしてEclipse上で
下記サンプルを作成しました。ここで不思議なことが起きました。
下記を実行すると System.out.println(in.ready())
の部分でfalseが返り処理がwhileループの中に入らない状態です。
しかし、System.out.println(in.ready())の部分にブレークポイントを付けて1行ずつ実行していくと
trueが返りwhileループの中の結果を読み取る処理にたどり着きます。
これはどういうことでしょうか。
public class Test {
public static void main(String[] args) {
String command = "hostname";
try {
Process process = Runtime.getRuntime().exec(command);
BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
System.out.println(in.ready());
while(in.ready()) {
}
in.close();
} catch(Exception e) {
e.printStackTrace();
}
}
}
お礼
ご回答ありがとうございます。 教えていただいたサイトにありますように waitFor()で解決しました。 ありがとうございました。