在两个控制台应用之间管道

时间:2012-03-31 22:46:26

标签: c++ windows pipe

如何在不同控制台窗口中运行的两个独立控制台应用程序之间进行管道连接?

e.g。我想做类似的事情:

ffmpeg -i 0.flv -vcodec mpeg4 -f asf -s cif - | vlc -

但是,我想从两个单独的窗口执行此操作,这不起作用,我想这是因为标准输出是cmd窗口的本地。

cmd窗口1:

ffmpeg -i 0.flv -vcodec mpeg4 -f asf -s cif -

cmd窗口2:

vlc -

有没有办法以编程方式实现这一目标?幕后|究竟做了什么?

3 个答案:

答案 0 :(得分:2)

cmd做的是将第一个进程的stdout连接到第二个进程的stdin,您可以通过编程方式执行此操作。有关示例,请参阅以下SO帖子:

How does one setup a pipe between two child processes in Win32?

如果要查看两个程序(STDERR)的状态输出,可以将其重定向到另一个文件或以编程方式读取。

答案 1 :(得分:1)

没有办法。 |将一个命令的输出传递给另一个进程的stdin。

答案 2 :(得分:0)

尝试编写两个调用其他进程的包装器进程,并使用命名管道重定向数据。

http://msdn.microsoft.com/en-us/library/windows/desktop/aa365590(v=vs.85).aspx