我很抱歉,如果标题是相当混乱,但我想知道是否有可能获得被管道输送到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

最后一行得到由袜直到用户发送信号情报更新。

问题是,在Java中,InputStream中从过程中不产生任何数据。但是,如果我忽略袜的管道到瘸子,sox -d -t wav test.wav,InputStream获取数据。我的问题是,什么事到控制台了呢?我怎样才能访问它。

有帮助吗?

解决方案

当的bash开始执行sox -d -t wav - | lame - test.mp3,因为管道字符的bash将叉两个过程来执行各命令,然后从第一处理用标准输入到第二个连接标准输出。击不会做任何特定与任一过程的标准错误,让你从SOX(Input File ...)看到的画面输出不管操作的一部分。

从我可以从你的问题明白了,你有启动这两个SOx和跛脚过程一个Java程序。你是如何做的更多细节将是一件好事。但在任何情况下得到屏幕输出显示你的例子,你必须从SOX进程读取标准错误。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top