繁体   English   中英

在调用r.exec启动cmd提示符后,如何停止执行我的java程序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM