为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕桂英4014372 2021-09-26 18:07:38
我正在尝试使用 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");// WaitingString 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();
查看完整描述

1 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

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


尝试更换/bin/bash用pandoc,看看它是否工作。


在我这边,我可以在没有 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();

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


查看完整回答
反对 回复 2021-09-26
  • 1 回答
  • 0 关注
  • 664 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信