先上代码
- 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的内容。