繁体   English   中英

ProcessBuilder 进程不提供实时 output

[英]ProcessBuilder process not providing real time output

我正在java程序中运行ProcessBuilder程序,使用Z6B7B655D222222FAA377C512493A093A040Z Z56381F381F381577B.412774B.4125774.2772772774.2772774.2772774.2772772572572572572572572572577B. 专门用于蓝牙 LE 命令。 对于“hciconfig”之类的命令,该过程完成,我可以将 output 打印到控制台或 textarea (JFX)。 hcidump 等其他命令会持续运行,直到手动终止。 对于这些命令,我无法在进程运行时打印中间 output。 我已经尝试过 apache.commons CommandLine 和 java ProcessBuilder 方法,每种方法可能有 6 种方法来日落。 这应该是一个相当简单的任务,但到目前为止还没有运气。 这是 java 代码:

Process pb = new ProcessBuilder()
        .command("hcidump", "-i", "hci0")
        .redirectOutput(ProcessBuilder.Redirect.INHERIT)
        .start();

System.out.println(pb.getOutputStream().toString());

打印的 output stream 似乎是一个地址:java.lang.ProcessImpl$ProcessPipeOutputStream@b06aa6f

如何在进程仍在运行时访问进程 output?

子进程的标准输出 stream 不幸命名为pb.getInputStream() ,而不是子进程的标准输入pb.getOutputStream()

只需使用 transferTo 将 stdout 发送到目的地,例如:

 pb.getInputStream().transferTo(System.out);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM