我想知道是否有Linux等效的Linux mkfifo.相当于我的意思是使用st_mode S_IFIFO创建文件的方式.谢谢你的回答.
应该可以在某种程度上模仿mkfifo行为。很多年前,我已经为OS / 2实现了类似的功能,就文件系统而言,它与WinXX十分相似。
主要限制是Windows使用保留的管道文件名:\\。\ pipe \管道名或\\ 服务器名 \ pipe \管道名(通过网络非常有用)。但是您将无法直接使用任意fifo名称。管道名称需要\\。\ pipe \前缀。
但是,应用程序可以CreateNamedPipe使用PIPE_ACCESS_DUPLEX例如GUID名称创建管道,并使用DeviceIoControl/ 在目标目录中创建指向该管道的符号链接FSCTL_SET_REPARSE_POINT。这应该非常接近mkfifo。
缺点是,只要管道实例存在,为管道提供服务的应用程序就必须运行。并且,当然,它应该在终止时清除符号链接。此外,它需要从管道读取所有数据并再次写回。不确定是否可以使用零复制来实现。
还有其他方面。例如,如果要删除模拟的FIFO,则在这种情况下需要跟踪符号链接的删除并终止工作进程。
抱歉,我没有Windows开发环境,因此无法测试此方法。
| 归档时间: |
|
| 查看次数: |
8590 次 |
| 最近记录: |