我正在尝试使用runtime.getruntime().exec(String command)来返回一个值,以便我可以让系统决定是否再次执行它。 有没有解决方案?
我正在尝试使用runtime.getruntime().exec(String command)来返回一个值,以便我可以让系统决定是否再次执行它。 有没有解决方案?
Runtime.exec
返回一个 Process
对象,该对象有一个名为 waitFor
的方法,会等待正在运行的进程终止并返回。
Process
有一个名为 exitValue
的方法,返回一个 int
表示程序的退出状态。惯例表明,0
表示正常终止,但这可能取决于你要运行的程序。
你需要...
Process
实例返回的 exitValue
与已知的有效退出值进行比较。注意事项...
Process
的 InputStream
(输入和错误),因为不这样做可能会导致某些进程停滞ProcessBuilder
通常是更好的解决方案,因为它在处理命令的多个参数、重定向以及甚至确定命令的起始目录上都具有更好的功能...Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec(args);
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);
}
它返回的是进程,这就是它将要返回的内容,你需要推断它是否成功运行,这取决于你的进程实际上在做什么。
runtime.getruntime().exec(String command) 方法创建一个本地进程并返回 Process 的子类实例,该实例可用于控制进程并获取有关它的信息。Process 类提供了执行从进程输入、执行向进程输出、等待进程完成、检查进程的退出状态以及销毁(杀死)进程的方法,并且它有一个 exitValue 方法,如果返回值为 0,则表示正常终止。
Reference :http://docs.oracle.com/javase/7/docs/api/java/lang/Process.html