gpt4 book ai didi

java - 使用 Java 程序运行 Bash 命令的处理输入

转载 作者:行者123 更新时间:2023-11-29 04:43:42 24 4
gpt4 key购买 nike

我正在使用以下对象通过我的 Java 代码运行 bash 命令。

public class Scripter {
private final String[] ENV = {"PATH=/bin:/usr/bin/"};

private String cmd;
private Process process;

public Scripter(String cmd) throws IOException {
this.cmd = cmd;
process = Runtime.getRuntime().exec(cmd, ENV);
}
}

现在我正在调用这个对象并尝试打印这个函数中的输出。

public static void main(String[] args) {
Scripter gitCheck;

try {
gitCheck = new Scripter("git --version");
} catch (IOException e) {
e.printStackTrace();
}
Scanner sc = new Scanner(System.in);
if (sc.hasNext()) {
System.out.println(sc.next());
}
}

程序进入无限循环,什么也不做。我在这里做错了什么?

最佳答案

您正在尝试从 Java 进程的标准输入中读取一个字符串:

Scanner sc = new Scanner(System.in);
if (sc.hasNext()) { ... }

因此您的 Java 程序将阻塞,直到您实际将某些内容传递到其标准输入或关闭标准输入。

(不是死循环,和git命令无关)

如果你想阅读 git 命令的输出,你需要阅读 process.getInputStream()而不是 System.in

关于java - 使用 Java 程序运行 Bash 命令的处理输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38153553/

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