【问题标题】:Pipe between two console applications?两个控制台应用程序之间的管道?
【发布时间】:2012-03-31 22:46:26
【问题描述】:

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

例如我想做类似的事情:

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 -

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

【问题讨论】:

  • 如果您确切地告诉我们您想通过此实现什么目标,建议解决方案可能会更容易。
  • 很明显他正试图将 ffmpeg 输出定向到 VLC 的输入我认为? :)
  • 是的,但问题是如何在 2 个单独的窗口中执行此操作。为什么在 2 个窗口中?如果他想关注两个程序的状态报告(通过 STDERR),可能还有其他解决方案(见我的回答)。

标签: c++ windows pipe


【解决方案1】:

cmd 所做的是将第一个进程的标准输出连接到第二个进程的标准输入,您可以通过编程方式完成此操作。有关示例,请参见以下 SO 帖子:

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

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

【讨论】:

    【解决方案2】:

    没有办法。 |将一个命令的输出通过管道传输到另一个进程的标准输入中。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多