[英]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.