process.waitFor()

waitFor:等待子进程执行结束,或者已终止子进程,此方法立即返回。
当RunTime对象调用exec方法后,jvm会创建一个子进程,该子进程与jvm建立三个管道连接:标准输入流、标准输出流、标准错误流。假设该子进程不断向标准输入流、标准输出流写数据,而jvm不读取的话,会导致缓冲区塞满而无法继续写数据,最终堵塞在waitFor这里。

现实遇到的情况:这里要一组cmd命令通过

Runtime.getRuntime().exec(cmd)

执行,现在遇到问题是,程序上是顺序执行,但是在jvm中感觉就不是了,而是随机执行,或者说不是按照顺序执行,还在验证;

而且,要执行的命令似乎是连续的不能正确执行,所以现在的解决办法是写了一个脚本去执行多条命令,或者取消这些命令之间的相互依赖性。



原文地址:https://www.cnblogs.com/notchangeworld/p/13576561.html