开发者

cause the main process wait until another process is finished

开发者 https://www.devze.com 2022-12-20 15:11 出处:网络
I have a synchronization problem in java. I want my main thread to wait until process \"p1\" is finished.

I have a synchronization problem in java. I want my main thread to wait until process "p1" is finished. I have used "waitfor" method. it has not worked for me.

Process p1 = runtime.exec("cmd /c start /MIN " + path + "aBatchFile.bat" );
p1.waitFor();

Could anybody help me please?

Thank you so much开发者_开发知识库.


The problem here is that the Process object you get back from exec() represents the instance of cmd.exe that you start. Your instance of cmd.exe does one thing: it starts a batch file and then exits (without waiting for the batch file, because that's what the start command does). At that point, your waitFor() returns.

To avoid this problem, you should be able to run the batch file directly:

Process p1 = runtime.exec(path + "aBatchFile.bat");
p1.waitFor();

Alternately, try the /wait command line option:

Process p1 = runtime.exec("cmd /c start /wait /MIN " + path + "aBatchFile.bat" ); 
p1.waitFor(); 
0

精彩评论

暂无评论...
验证码 换一张
取 消