【发布时间】:2011-03-21 13:27:24
【问题描述】:
我有以下sn-p的代码:
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();
gobblers 是Runnables,它使用BufferedReader 来读取执行进程的输入和错误流。虽然这在大多数情况下都有效,但偶尔会出现一个窗口(大约 2 分钟左右),我将 processExitCode 设为 0,这表示正常终止,但输入和错误流中没有任何内容 - 甚至没有任何指示流结束。
就像我之前指出的那样,这在大多数情况下都有效,但这种故障偶尔会发生 - 我完全感到困惑。有什么想法吗?
破布
【问题讨论】:
-
更多上下文 - 这是一个多线程应用程序,其中许多 Runtime.exec() 同时发生。抹布
-
你的意思是流食者永远阻塞?
-
是的!他们只是挂...
标签: java inputstream runtime.exec