我有以下代码片段:
Process proc = runtime.exec(command);
errorGobbler = new ErrorStreamGobbler(proc.getErrorStream(), logErrors, mdcMap);
outputGobbler = new OutputStreamGobbler(proc.getInputStream(), mdcMap);
executor.execute(errorGobbler);
executor.execute(outputGobbler);
processExitCode = proc.waitFor();
其中 gobbler 是Runnable
s,它使用 aBufferedReader
来读取执行进程的输入和错误流。虽然这在大多数情况下都有效,但我偶尔会得到一个窗口(大约 2 分钟左右),我得到processExitCode
0,这表示正常终止,但输入和错误流中没有任何内容 - 甚至没有任何指示结束-溪流。
就像我之前指出的那样,这在大多数情况下都有效,但这种失败每隔一段时间就会发生一次——我完全感到困惑。有任何想法吗?
破布