使用方式
我使用下面一段代码,来执行command
命令。
问题描述
当前进程被挂起,无法执行结束。
解决过程
原来是Java InputStream的是大小限制的,当日志过多时,InputStream执行的那个线程将会被阻塞,那么向这个InputStream提供数据的进程也会被阻塞(估摸着应该是管道机制),而我又使用了waitFor()
,那么我的当前进程就会被阻塞。
图中代码问题在于:当inputStream
还没读取结束时,errorStream
积累的数据达到阀值,导致命令执行的进程被阻塞,当前进程也被挂起!