您的位置:首页 > 编程语言 > Java开发

java调用命令行Runtime.getRuntime().exec()函数碰到的阻塞问题

2011-06-21 12:34 786 查看
先上代码

]Process process = Runtime.getRuntime().exec(cmds);
InputStream in = process.getInputStream();
StringBuilder sBuilder = new StringBuilder();
int a;
while ((a = in.read()) != -1) {
sBuilder.append((char) a);
}


执行上面的代码的时候,如果cmds里的命令在后台打印出许多内容的话,process的 inputstream和errorstream的缓冲区会被填满,这个时候如果你不吧内容读出来的话就会阻塞在那里,而执行的进程因为内容打印不出来也会阻塞在那里不动。

所以这种情况最好是开两个单独的线程去分别读inputstream和errorstream的内容。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: