【发布时间】:2010-02-28 13:00:34
【问题描述】:
很抱歉,如果标题很混乱,但我想知道是否有可能获取一个应用程序的标准输出,该应用程序通过管道传输到 java 中的另一个应用程序。
这是命令行。
sox -d -t wav - | lame - test.mp3
如果这是在 bash 中执行,这是输出。
Input File : '/dev/dsp' (ossdsp)
Channels : 2
Sample Rate : 48000
Precision : 16-bit
Sample Encoding: 16-bit Signed Integer PCM
In:0.00% 00:00:25.00 [00:00:00.00] Out:1.20M [ -|=- ] Clip:0
最后一行被 sox 更新,直到用户发送 SIGINT。
问题是,在 java 中,来自该进程的 InputStream 不会产生任何数据。但是,如果我省略了 sox 的管道,sox -d -t wav test.wav,InputStream 会获取数据。我的问题是,控制台出了什么问题?我怎样才能访问它。
【问题讨论】:
-
你是如何使用 Java 来执行这个命令的?
Runtime.exec()?ProcessBuilder?
标签: java exec pipe external-process