Runtime.getRuntime().exec() 输出流阻塞的解决方法

来源:互联网 发布:四个字网络女歌手名字 编辑:程序博客网 时间:2024/05/16 15:47

java中用Runtime.getRuntime().exec() 调用外部程序, 获取"标准输出流", 老是阻塞. 在网上找了找, 觉得应该是"错误输出流"的问题. 果然, 为"错误输出流"单开一个线程读取之, "标准输出流"就不再阻塞了. 源码如下:

 

 

另外, Runtime.getRuntime().exec() 还有一些局限性, 就是无法像cmd那样执行较为复杂的命令. 比如, 输出流的重定向, 如:

 

他会立即返回, 不会去执行. 但是我们可以这样做, 能够完成于cmd中一样的工作:

 

其中 /c 就是"执行后面字符串的命令". 这样就OK了,但同时还是要注意"错误输出流"的问题,依然要单开一个线程读取.否则一样会阻塞的.