Fifo文件Windows示例

我想知道是否有一个Linux的mkfifo等效的Windows。 相当于,我的意思是用st_mode S_IFIFO创build文件的方法 。 感谢您的回答。

应该可以在一定程度上模拟mkfifo行为。 对于文件系统,我已经实现了类似于多年前的类似于WinXX的OS / 2。

主要的限制是Windows在网络上使用保留的文件名\\。\ pipe \ pipename\\ servername \ pipe \ pipename (这可能非常有用)。 但是你不能直接使用任意的fifo名字 。 管道名称需要\\。\ pipe \前缀。

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

缺点是只要管道实例存在,服务管道的应用程序就必须运行。 当然,它应该清理终止的象征性的联系。 此外,它需要读取管道中的所有数据并将其重新写回。 不知道这是否可以用零拷贝来实现。

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

我很抱歉,我没有Windows开发环境,所以我不能测试这种方法。