两个控制台应用程序之间的管道?

问题描述:

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

例如我愿做类似的东西:

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 - 

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

+0

如果你告诉我们你想要达到这个究竟它可能更容易提出一个解决方案。 – aKzenT 2012-03-31 22:50:52

+0

很明显,他试图将ffmpeg输出引导到VLC的输入,我认为? :) – 2012-03-31 22:52:37

+0

是的,但问题是如何在2个独立的窗口中做到这一点。为什么在2个窗口?如果他想要跟踪两个程序(通过STDERR)的状态报告,可能还有其他解决方法(请参阅我的答案)。 – aKzenT 2012-03-31 22:56:36

cmd所做的是将第一个进程的stdout连接到第二个进程的stdin,您可以通过编程方式执行此操作。举一个例子,请看SO后:

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

如果你想看到这两个程序(STDERR)输出的状态,您可以在此重定向到另一个文件或程序读取。

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

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

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