gpt4 book ai didi

java - 我想要我的 Runtime.getRuntime().exec() 的实时输出

转载 作者:IT王子 更新时间:2023-10-29 01:27:32 26 4
gpt4 key购买 nike

public static void executeCommand(String cmd) {
try {
Process process = Runtime.getRuntime().exec(cmd, null,
new File("/usr/hadoop-0.20.2/"));
InputStream stdin = process.getInputStream();
InputStreamReader isr = new InputStreamReader(stdin);
BufferedReader br = new BufferedReader(isr);
String line;
System.out.println("<output></output>");
while ((line = br.readLine()) != null)
System.out.println(line);
InputStreamReader esr = new InputStreamReader(
process.getErrorStream());
BufferedReader errorReader = new BufferedReader(esr);
String lineError;
while ((lineError = errorReader.readLine()) != null)
System.out.println(lineError);
process.waitFor();
System.out.println("");

} catch (Exception e) {
e.printStackTrace();
}
}

这是我执行名为“cmd”的命令的代码。但是我无法通过这段代码获得实时输出。命令完成时输出出来。我想要实时输出。有办法做到这一点吗?

最佳答案

您描述的问题很可能是由您调用的应用程序引起的:许多应用程序在连接到终端时使用无缓冲 I/O,但在连接到管道时使用缓冲 I/O。因此,您的 cmd 可能只是决定不以小位的形式写入其输出,而是以大块的形式写入。正确的解决方法是调整命令,在适当的时候刷新它的输出。在 Java 方面您对此无能为力。另见 this answer .

关于java - 我想要我的 Runtime.getRuntime().exec() 的实时输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11788704/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com