Runtime.getRuntime().exec(),总是直接返回,如何让它等待程序执行完成后在执行后续

「已注销」 2018-03-23 12:22:42
下面代码是直接从网上找到的,但是效果跟他说的不一样,waitfor()方法并不能等待启动的bat文件执行完,而是直接返回了。我想让他等待bat执行完以后在进行后续操作,如何实现?

package core;
import java.io.IOException;

public class CmdMain { public static void run_cmd(String strcmd) {
//
Runtime rt = Runtime.getRuntime(); //Runtime.getRuntime()返回当前应用程序的Runtime对象
Process ps = null; //Process可以控制该子进程的执行或获取该子进程的信息。
try {
ps = rt.exec(strcmd); //该对象的exec()方法指示Java虚拟机创建一个子进程执行指定的可执行程序,并返回与该子进程对应的Process对象实例。
ps.waitFor(); //等待子进程完成再往下执行。
} catch (IOException e1) {
e1.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

int i = ps.exitValue(); //接收执行完毕的返回值
if (i == 0) {
System.out.println("执行完成.");
} else {
System.out.println("执行失败.");
}

ps.destroy(); //销毁子进程
ps = null;
}
public static void main(String[] args) {
String strcmd = "cmd /c start d:\\bstmp\\test.bat";
run_cmd(strcmd);
}
}
...全文
1649 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzzhit 2018-11-09
  • 打赏
  • 举报
回复
需要把run_cmd放在子线程中。
「已注销」 2018-05-26
  • 打赏
  • 举报
回复
没人回答,只能自己结贴了

50,639

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧