java调用命令行Runtime.getRuntime().exec()函数碰到的阻塞问题
2011-06-21 12:34
786 查看
先上代码
执行上面的代码的时候,如果cmds里的命令在后台打印出许多内容的话,process的 inputstream和errorstream的缓冲区会被填满,这个时候如果你不吧内容读出来的话就会阻塞在那里,而执行的进程因为内容打印不出来也会阻塞在那里不动。
所以这种情况最好是开两个单独的线程去分别读inputstream和errorstream的内容。
]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的内容。
相关文章推荐
- java调用命令行Runtime.getRuntime().exec()阻塞问题
- Runtime.getRuntime().exec() 输出流阻塞问题
- Runtime.getRuntime().exec()进程阻塞问题
- java Runtime.getRuntime().exec 调用系统脚本/命令注意事项
- Java调用Runtime.getRuntime().exec(commandStr)来调用cmd执行指令
- 使用Runtime.getRuntime().exec()在java中调用python脚本
- Java 使用Runtime.getRuntime.exec 和 ProcessBuilder 调用外部命令
- Eclipse下使用Runtime.getRuntime().exec启动java程序的问题
- java Runtime.getRuntime().exec 调用系统脚本/命令注意事项
- [转]java调用外部程序Runtime.getRuntime().exec
- 在runtime.getruntime().exec调用程序时路径的问题的解决方案列表
- Java调用批处理文件,Runtime.getRuntime().exec参数,示例
- Runtime.getRuntime().exec()进程阻塞问题
- 如何在JAVA代码中执行 exec master..xp_cmdshell @cmd // 当作SQL语句调用就成了 或者调用 Runtime.getRuntime().exec
- Runtime.getRuntime().exec()执行阻塞问题解决
- java Runtime.getRuntime().exec 调用系统脚本/命令注意事项
- java 利用Runtime.getRuntime().exec()调用python脚本并传参
- java Runtime.getRuntime().exec 调用系统脚本/命令注意事项
- Runtime.getRuntime().exec执行阻塞问题解决
- java 利用Runtime.getRuntime().exec()调用python脚本并传参