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 运行时一起使用,fread
、fwrite
和 fclose
使用 _popen
或 _wpopen
函数来创建管道。在 Windows 上,管道是与文件名分开的命名空间的一部分。没有什么可以传递给 fopen
的等效项。
【讨论】:
CreateFile(fopen 所依赖的 API)可以打开现有命名管道的客户端,但不能自己创建管道。以上是关于Windows 等效于 Linux fifo的主要内容,如果未能解决你的问题,请参考以下文章
等效于 Mac/Linux 崩溃的 Windows getch()
posix_ipc python 包等效于 Windows?
在 Windows 中等效于 Angular 构建过程的 cat 命令