我試圖從Java運行命令行命令,並且快速完整性檢查讓我意識到我遇到問題的原因是我無法獲得以下pr.waitFor()
調用的工作。該程序在30秒內結束,並在「foo:」後面打印任何內容。我預計它只需要超過30秒,然後在「foo:」後打印一個隨機數字。我究竟做錯了什麼?如何使用javas Process.waitFor()?
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Sample {
public static void main(String[] args) throws Exception {
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("sleep 32; echo $RANDOM");
pr.waitFor();
BufferedReader input = new BufferedReader(
new InputStreamReader(pr.getInputStream()));
String line=null;
StringBuilder s = new StringBuilder();
while((line=input.readLine()) != null) {
System.out.println(s);
s.append(line);
}
System.out.println("foo: " + s.toString());
}
}
嗯,你能不能請延長你的答案有點?我怎麼做?另外,sleep和echo是shell命令,它們不是嗎? – jonalv 2011-05-30 15:00:23
@jonalv確定我會編輯它。基本上exec不調用shell,它調用一個可執行文件。如果你想執行shell命令,你需要調用shell並傳遞要執行的命令。 Femi的答案顯示瞭如何調用shell bash並執行睡眠和回顯。 – ditkin 2011-05-30 15:04:24