我正在学习有关命名管道的知识。当我做mkfifo()什么都没有发生,我没有得到一个额外的文件在我的文件夹中,我可以写入或读取。有什么建议吗?
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
mkfifo("C:\\Users\\name\\Documents\\codes", 0666);
}发布于 2021-10-22 19:23:48
不可能在任何默认的Windows文件系统上创建命名管道;如果您愿意的话,0666也不是正确的权限。对这个类函数的可移植调用使用符号常量,这些常量在不同的操作系统上扩展不同的值,但我离题了。
如果你在Windows上需要命名管道,你可以调用CreateNamedPipe。这实际上导致了一条理论上可以交给另一个程序的路径。然而,Windows上的管道有点特殊,不应该交给需要文件的程序。因此,最明显的方法是正确的方法,告诉程序打开命名管道,并为其命名以传递给CreateNamedPipe本身。如果程序不需要命名管道,那么即使您将其作为打开的文件句柄传递给它,它也很可能无法工作。
https://stackoverflow.com/questions/69681843
复制相似问题