gpt4 book ai didi

java - 在 Ubuntu 上使用 ProcessBuilder 运行命令时永远等待输出

转载 作者:行者123 更新时间:2023-12-04 18:40:12 24 4
gpt4 key购买 nike

我正在尝试使用 ProcessBuilder 在 Ubuntu 上获取命令的执行结果。我尝试从以下技术中获取输出结果。但是没有结果显示,程序等待没有输出。

执行命令:

 String[] args = new String[]{"/bin/bash", "-c", "pandoc -f html - t asciidoc input.html"};
Process process = new ProcessBuilder(args).start();

获取输出技术 1:
InputStream inputStream = process.getInputStream();
StringWriter stringWriter = new StringWriter();
IOUtils.copy(inputStream, stringWriter, "UTF-8");
// Waiting
String asciidocoutput = writer.toString();

获取输出技术 2:
BufferedReader reader= new BufferedReader(new InputStreamReader(process.getInputStream()));
StringBuilder builder = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
// Waiting
builder.append(line);
builder.append(System.getProperty("line.separator"));
}
String result = builder.toString();

最佳答案

ProcessBuilder 的构造函数接受一个命令,并且每个后续字符串都被视为第一个字符串的参数,被识别为主命令。

尝试替换 /bin/bashpandoc ,看看它是否有效。

在我这边,我可以在没有 ProcessBuilder 帮助的情况下运行任意命令,使用 Runtime.getRuntime().exec(...) 相反,像这样:

public static void main(String[] args) throws Exception {
Process proc = Runtime.getRuntime().exec("cmd /c ipconfig");

BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String line = null;
while((line = reader.readLine()) != null){
System.out.println(line);
}
}

获得预期的输出:
Configurazione IP di Windows


Scheda Ethernet Ethernet:

Suffisso DNS specifico per connessione:
Indirizzo IPv6 locale rispetto al collegamento . : fe80::fcba:735a:5941:5cdc%11
Indirizzo IPv4. . . . . . . . . . . . : 192.168.0.116
Subnet mask . . . . . . . . . . . . . : 255.255.255.0
Gateway predefinito . . . . . . . . . : 192.168.0.1

Process finished with exit code 0

如果确实需要使用 ProcessBuilder ,可以通过定义 Process 来实现相同的行为这边走:
Process proc = new ProcessBuilder("ipconfig").start();

只需调用您要运行的命令。

关于java - 在 Ubuntu 上使用 ProcessBuilder 运行命令时永远等待输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52374425/

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