Windows 等效于 Linux fifo

Posted

技术标签:

【中文标题】Windows 等效于 Linux fifo【英文标题】:Windows equivalent of Linux fifo 【发布时间】:2018-08-05 02:32:20 【问题描述】:

我使用库中的一个函数,该函数将文件名作为参数。在我的应用程序中,我从网络接收数据,因此我无法直接将下载的数据提供给库,因为我无法将其写入磁盘。为了解决这个问题,我使用了 Linux fifo(使用 mkfifo() 创建)并将 fifo 名称赋予库。

现在我必须将代码移植到 Windows,并且我正在寻找与 Linux fifo 机制等效的东西。我已经尝试过Windows Named Pipe,但这些管道无法像使用fopen() 等标准库函数的常规文件一样打开(除非我遗漏了什么)。

您知道 Windows 将数据作为文件从内存中读取的机制吗?

【问题讨论】:

【参考方案1】:

命名管道实际上就是你想要的。如果您想将它们与 C 运行时一起使用,freadfwritefclose 使用 _popen_wpopen 函数来创建管道。在 Windows 上,管道是与文件名分开的命名空间的一部分。没有什么可以传递给 fopen 的等效项。

【讨论】:

CreateFile(fopen 所依赖的 API)可以打开现有命名管道的客户端,但不能自己创建管道。

以上是关于Windows 等效于 Linux fifo的主要内容,如果未能解决你的问题,请参考以下文章

等效于 Mac/Linux 崩溃的 Windows getch()

posix_ipc python 包等效于 Windows?

等效于 Linux 上的 Win32 性能计数器 [重复]

在 Windows 中等效于 Angular 构建过程的 cat 命令

在 Windows 中等效于带有 MAP_GROWSDOWN 的 mmap

在Windows中等效的Shell脚本