ランタイムを使用して、Javaプログラムからコマンドプロンプトコマンドを実行しています。ただし、コマンドが返す出力を取得する方法はわかりません。
これが私のコードです:
Runtime rt = Runtime.getRuntime();
String[] commands = {"system.exe", "-send" , argument};
Process proc = rt.exec(commands);
やってみた System.out.println(proc);
が何も返ってきませんでした。そのコマンドを実行すると、セミコロンで区切られた2つの数値が返されます。これを変数に入れて出力するにはどうすればよいですか?
これが私が今使っているコードです:
String[] commands = {"system.exe", "-get t"};
Process proc = rt.exec(commands);
InputStream stdIn = proc.getInputStream();
InputStreamReader isr = new InputStreamReader(stdIn);
BufferedReader br = new BufferedReader(isr);
String line = null;
System.out.println("<OUTPUT>");
while ((line = br.readLine()) != null)
System.out.println(line);
System.out.println("</OUTPUT>");
int exitVal = proc.waitFor();
System.out.println("Process exitValue: " + exitVal);
しかし、出力として何も得ていませんが、自分でそのコマンドを実行すると、正常に動作します。
pwd && ls
は単一のファイルを実行するだけではなく、シェルで実行する/bin/pwd
と、/bin/ls
実行可能ファイルと実行可能ファイルの両方を実行します。java内でそのようなことをしたい場合は、のようなことをする必要があります{"/bin/bash","-c", "pwd && ls"}
。おそらくもう質問はありませんが、他の人が質問するかもしれないので、私は答えようと思いました。