管道应用的掌握控制台文本到其它应用程序
-
23-09-2019 - |
题
我很抱歉,如果标题是相当混乱,但我想知道是否有可能获得被管道输送到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进程读取标准错误。
不隶属于 StackOverflow