gpt4 book ai didi

java - linux 命令的输出未在 java 中捕获

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:49:57 24 4
gpt4 key购买 nike

我正在尝试从 java 运行以下命令并想要捕获输出。该方法立即完成,无需向控制台写入任何内容。

Linux 命令是 repo forall -c 'echo pwd is;pwd;git status'方法是

public static String executeCommandWithOutput(String command) {
System.out.println("Running the command "+command);
StringBuffer output = new StringBuffer();
String line = "";
try {
Process process =Runtime.getRuntime().exec(command);
process.waitFor();

BufferedReader reader =
new BufferedReader(new InputStreamReader(process.getInputStream()));
while ((line = reader.readLine())!= null) {
output.append(line);
}
System.out.println("Content is "+output.toString());
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
return output.toString();
}

我也尝试将输出重定向到一个文件。都没有用。有什么想法吗??

最佳答案

检查您尝试执行的命令是否有标准输出。

可能它失败了,你得到了错误输出。

您可以使用getErrorStream 检查错误输出,文档为here .

例如像这样

StringBuffer error = new StringBuffer();

BufferedReader reader =
new BufferedReader(new InputStreamReader(process.getErrorStream()));

while ((line = reader.readLine())!= null) {
error.append(line);
}

System.out.println("Error is " + error.toString());

同时检查你的 fork 命令的exitValue,文档是here

int exitStatus = process.exitValue();

System.out.println("Exit status is " + exitStatus );

关于java - linux 命令的输出未在 java 中捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32650808/

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