【发布时间】:2017-02-24 10:29:19
【问题描述】:
我正在使用 java 进程构建器来执行 Windows 外部进程(即 exe 文件)。我必须使用输入流获取进程信息和错误,错误流将其写入一些文本文件。
它有时会工作,有时会意外挂起。
当我调用大约三个外部进程来一一执行时。两个进程工作,它只挂在第三个进程上。
有时我可以看到进程退出值为 0,它给出了一些其他随机值。
我已阅读以下博客并应用相同的逻辑来执行该过程,但不适用于我的场景。
谁能帮我诊断一下这些问题...
//开始启动外部进程 //此代码将从中选择三个参数以顺序执行该过程 //它将通过for循环一一传递进程命令
Process p =new ProcessBuilder(s)
.directory(new File(je.getExecution().getWorkingDirectory()))
.redirectErrorStream(true)
.redirectOutput(file)
.start();
p.getOutputStream().close();
int processStatus= p.waitFor();
//如果进程以0正常终止退出
提前谢谢..,
【问题讨论】:
-
您可能没有使用 stdout/stderr,尽管还有其他陷阱。强烈推荐你阅读javaworld.com/article/2071275/core-java/…
-
@Adam 我正在使用标准输出/标准错误。我的问题是它有时会处理第三个过程。我将依次调用三个过程。我不知道为什么调用第三个进程失败
-
一些代码怎么样
-
@SouravGanguly 更新了我的问题中的代码。请看一下
-
@SouravGanguly 关于该代码的任何想法
标签: java multithreading jvm deadlock