我在java中有一个同步问题。 我希望我的主线程等待进程“p1”完成。 我已经使用“waitfor”方法。它并没有为我工作。导致主进程等到另一个进程完成
Process p1 = runtime.exec("cmd /c start /MIN " + path + "aBatchFile.bat");
p1.waitFor();
请问有人能帮我吗?
非常感谢。
我在java中有一个同步问题。 我希望我的主线程等待进程“p1”完成。 我已经使用“waitfor”方法。它并没有为我工作。导致主进程等到另一个进程完成
Process p1 = runtime.exec("cmd /c start /MIN " + path + "aBatchFile.bat");
p1.waitFor();
请问有人能帮我吗?
非常感谢。
这里的问题是您从exec()
得到的Process
对象代表您开始的cmd.exe
的实例。 cmd.exe
的实例会做一件事情:它启动一个批处理文件,然后退出(不需要等待批处理文件,因为这是start
命令的作用)。此时,您的waitFor()
返回。
为了避免这个问题,你应该能够直接运行该批处理文件:
Process p1 = runtime.exec(path + "aBatchFile.bat");
p1.waitFor();
或者,尝试/wait
命令行选项:
Process p1 = runtime.exec("cmd /c start /wait /MIN " + path + "aBatchFile.bat");
p1.waitFor();
它应该工作。 p1.waitFor()的返回值是什么? – echo 2010-02-17 04:19:55
这是行不通的? – 2010-02-17 04:36:52