java から bash でプロセス/コマンドを実行するには、次のクラスを使用できます。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Arrays;
public class CmdExecutor {
public CmdExecutor(){
}
public void exe(String [] args) throws IOException{
if (args.length <= 0) {
System.out.println("empty command");
return;
}
Process process = new ProcessBuilder(args).start();
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
System.out.printf("Output of running %s is:",
Arrays.toString(args));
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
}
でも。プロセスが(まだ)終了しない場合はどうなりますか。計算を行い、シェルで出力します。プロセスを別のスレッドで実行し、フレームごとの文字列など、出力の変更を取得できるようにしたいと考えています。これはどのように達成できますか?