[英]How to stop the execution of my java program after i invoke r.exec to start a cmd prompt
在我的程序中我使用r.exec(); 启动命令提示符并在其中执行bat文件。
但是,只要执行上述语句,cmd提示就会启动并执行其中的bat文件。但是,java程序执行不会等到bat文件在提示符中执行,即。 它启动cmd提示并开始在其中执行bat文件,并继续执行r.exec()之后的下一个语句; 。(同时我的bat文件仍在提示中执行)
我的要求是,java程序必须等到执行命令提示符中的bat文件,而不是继续执行next语句。
Runtime.exec
返回一个Process
实例。 在该实例上,您可以调用waitFor()
以等待Process完成。
此外,您需要处理Process.getErrorStream()
和Process.getOutputStream()
(通常在单独的Thread中),以便Process在这些Buffers填满时不会阻塞。 带有redirectErrorStream(true)
ProcessBuilder
有一个方便的方法,它不需要同时处理两个流,也不需要额外的线程。
r.exec("command")
返回Process
。 从这里你可以简单地说出以下内容:
Process process = r.exec("command here");
process.waitFor(); //Waits until process closes
waitFor()
方法将暂停当前线程,直到进程关闭。
Javadoc
waitFor()
:如果需要,使当前线程等待,直到此Process对象表示的进程终止
此外,如果要捕获输入或向控制台发送命令,可以在单独的线程中使用process.getInputStream()
和process.getOutputStream()
。 这将允许您在批处理文件运行时监视它,因此如果由于某种原因发生故障,您可以取消终止进程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.