【发布时间】:2013-03-25 17:10:08
【问题描述】:
我已经使用 cygwin 构建了一个 .exe。它被称为 ms.exe。我正在尝试使用 ProcessBuilder 从 java 运行它。我之前使用过 ProcessBuilder 来捕获它的输出。
在命令窗口 (cmd.exe) 上,如果我运行 ms.exe [ms-params] > output.txt。然后输出包含
/cygdrive/c/my-path-to-ms.exe [msparams]
[程序输出]
在命令窗口中,如果我没有传递任何重定向,即 > output.txt,则输出仅包含 [程序输出]。
请注意,我的 PATH 环境变量下有 %CYGWIN_HOME%/bin。
使用 ms.exe 调用 ProcessBuilder 结束(没有任何异常)但作为输出我只得到
/cygdrive/c/my-path-to-ms.exe [msparams]
【问题讨论】:
-
您是如何阅读
Stream的?你检查过错误流和标准输出流吗? -
我可以从 process.getInputStream 中读取,但结果与我得到的结果相同。我已将代码简化为仅使用 processBuilder.redierctOutput 写入文件。该文件以相同的一行结束。我正在捕捉强制性的 IoException 和 InterruptedException,但那里什么也没有。我的猜测是,当我从命令行运行时,会涉及到 bash。