栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Runtime.exec()。waitFor()不会等待过程完成

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Runtime.exec()。waitFor()不会等待过程完成

通过使用

start
,您要求
cmd.exe
在后台启动批处理文件:

Process p = Runtime.getRuntime().exec("cmd /c start " + path + "\RunFromCode.bat");

因此,您从Java(

cmd.exe
)启动的进程将在后台进程完成之前返回。

删除

start
命令以在前台运行批处理文件-然后,
waitFor()
将等待批处理文件完成:

Process p = Runtime.getRuntime().exec("cmd /c " + path + "\RunFromCode.bat");

根据OP,重要的是要有可用的控制台窗口-这可以通过添加

/wait
参数来完成,如@Noofiz所建议。以下SSCCE为我工作:

public class Command {public static void main(String[] args) throws java.io.IOException, InterruptedException {       String path = "C:\Users\andreas";       Process p = Runtime.getRuntime().exec("cmd /c start /wait " + path + "\RunFromCode.bat");       System.out.println("Waiting for batch file ...");       p.waitFor();       System.out.println("Batch file done.");   }}

如果

RunFromCode.bat
执行
EXIT
命令,命令窗口将自动关闭。否则,命令窗口将保持打开状态,直到您使用显式退出它
EXIT
为止-
Java进程一直在等待,直到在两种情况下都关闭了窗口。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/469635.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号