关于getRuntime.exec()那些事

使用方式

我使用下面一段代码,来执行command命令。

执行命令

问题描述

当前进程被挂起,无法执行结束。

解决过程

原来是Java InputStream的是大小限制的,当日志过多时,InputStream执行的那个线程将会被阻塞,那么向这个InputStream提供数据的进程也会被阻塞(估摸着应该是管道机制),而我又使用了waitFor(),那么我的当前进程就会被阻塞。

图中代码问题在于:inputStream还没读取结束时,errorStream积累的数据达到阀值,导致命令执行的进程被阻塞,当前进程也被挂起!

结果

解决方案

你可能感兴趣的:(关于getRuntime.exec()那些事)