Fifo文件Windows示例

时间:2015-07-25 10:16:49

标签: windows mkfifo

我想知道Linux mkfifo是否有Windows等价物。相当于我的意思是使用 st_mode S_IFIFO 创建文件的方式。 谢谢你的回答。

1 个答案:

答案 0 :(得分:3)

应该可以在某种程度上模仿mkfifo行为 我已经为OS / 2多年前实现了类似的东西类似于文件系统的WinXX。

主要限制是Windows对管道使用保留文件名 \\。\ pipe \ pipename \\通过网络 servername \ pipe \ pipename (这可能非常有用)。 但你将无法直接使用任意的fifo名称。管道名称需要\\。\ pipe \ prefix。

但是,应用程序可以创建一个CreateNamedPipePIPE_ACCESS_DUPLEX的管道,例如GUID名称和使用DeviceIoControl / FSCTL_SET_REPARSE_POINT在目标目录中创建指向此管道的符号链接。这应该非常接近mkfifo

缺点是只要管道实例存在,为管道提供服务的应用程序必须运行。当然,它应该在终止时清理符号链接。 此外,它需要从管道中读取所有数据并再次将其写回。不确定这是否可以零拷贝实现。

还有一些方面。例如。如果您希望能够删除模拟FIFO,则需要跟踪删除符号链接并在此情况下终止工作进程。

对不起,我没有Windows开发环境,所以我无法测试这种方法。