【问题标题】:Is it possible that one program writes into a file which is used as stdin by another program in windows in real time?一个程序是否有可能实时写入一个文件,该文件被 Windows 中的另一个程序用作标准输入?
【发布时间】:2021-10-18 12:24:51
【问题描述】:

这是基本思想。程序 A 在运行时写入文件。这个文件实际上是写到程序 B 中的标准输入。程序 B 基本上是在“监听”程序 A 发送的内容,并在经过一些后期处理后实时显示在屏幕上。

这是一个例子。程序 A 除了基本的终端输出之外什么都不能做。所以,我让它把数据写入程序B,程序B进行后处理,然后实时显示格式化结果输出。

你可以说让程序 A 写入文件然后关闭文件。然后打开程序 B 来完成它的工作。这就像这里不需要的批处理。

这样的事情可以在 Windows 中完成吗?程序 A 已存在,无法更改。程序B由我写。

编辑: 如果两个程序都从命令行执行,则可以使用管道。但是,程序 A 在 GUI 中运行,并将输出到文件中。我无法更改程序 A。

【问题讨论】:

  • 你的意思是this
  • 管道?让程序 A 的输出写入管道,供程序 B 输入。从命令行终端:programA | programB

标签: c++ windows post-processing


【解决方案1】:

在命令提示符下,您可以像这样创建一个 管道

programA.exe | programB.exe

这将程序 A 的标准输出连接到程序 B 的标准输入。程序 A 写入的所有内容(例如使用 printfstd::cout)都可以被程序 B 读取(例如使用 scanfstd::cin)。

因为您提到“实时”,我应该指出程序 A 的输出可能会被缓冲,尤其是当它检测到它没有直接连接到终端而是连接到管道时。这意味着程序 B 可能不会立即看到 A 的所有输出,但只有在累积到足以将其写入单个块中时,或者程序 A 退出时才会看到。

【讨论】:

  • 另见“命名管道”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-23
  • 2012-01-06
  • 1970-01-01
  • 2021-11-13
相关资源
最近更新 更多