我正在尝试从 Java 运行命令行命令,快速的健全性检查让我意识到我遇到问题的原因是我无法获得下面的 pr.waitFor() 调用上类。该程序在不到 30 秒内结束,并且在“foo:”之后不打印任何内容。我预计它会花费 30 多秒并在“foo:”之后打印一个随机数。我究竟做错了什么?
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());
}
}
最佳答案
你应该尝试这个:
Process pr = rt.exec(new String[]{ "bash","-c", "sleep 32; echo $RANDOM" });
这将启动一个 shell 进程,然后在 shell 中运行您的命令。直到命令完成后,shell 才会返回。
请告诉我这是否适合您。
关于java - 如何使用javas Process.waitFor()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6177711/