![](/img/trans.png)
[英]JAVA output of exe file(executed with ProcessBuilder) does not redirected to console
[英]ProcessBuilder redirected to standard output
我想将java进程输出重定向到父java进程的标准输出。
使用ProcessBuilder类如下:
public static void main(String[] args) {
ProcessBuilder processBuilder = new ProcessBuilder("cmd");
processBuilder.directory(new File("C:"));
processBuilder.redirectErrorStream(true); // redirect error stream to output stream
processBuilder.redirectOutput(ProcessBuilder.Redirect.INHERIT);
}
我原以为“cmd”的输出,如:
Microsoft Windows [版本6.1.7601]版权所有(c)2009 Microsoft Corporation。 Tousdroitsréservés。
显示在用于运行java程序的DOS控制台中。 但是在DOS控制台中根本没有显示任何内容。
在讨论的其他主题中,我看到了使用BufferedReader类的解决方案:但是在这里我希望过程的输出直接显示在标准输出中,而不使用任何BufferedReader或“while read loop”。 可能吗?
谢谢。
尝试使用ProcessBuilder.inheritIO()
来使用与当前Java进程相同的I / O. 另外,你可以菊花链方式:
ProcessBuilder pb = new ProcessBuilder("cmd")
.inheritIO()
.directory(new File("C:"));
pb.start();
你确实错过了一个关键部分,你实际上需要开始你的过程并等待你的输出。 我相信这会奏效,
processBuilder.redirectOutput(ProcessBuilder.Redirect.INHERIT);
// Start the process.
try {
Process p = processBuilder.start();
// wait for termination.
p.waitFor();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.