我正在学习命名管道。当我执行mkfifo()
时,什么也没有发生,我没有在我的文件夹中获得一个额外的文件,我可以写入或读取。有什么建议吗?
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
mkfifo("C:\Users\name\Documents\codes", 0666);
}
不可能在任何默认的Windows文件系统上创建命名管道;如果你想的话,0666也不是正确的权限。对该类函数的可移植调用使用符号常量,这些符号常量在不同的操作系统上消耗不同的值,但是我离题了。
如果你在Windows上需要一个命名管道,你可以调用CreateNamedPipe。这实际上产生了一个路径,理论上你可以把它交给另一个程序。然而,Windows上的管道有点特殊,不应该交给需要文件的程序。因此,显而易见的方法是正确的方法,告诉程序打开命名管道,并给它传递给CreateNamedPipe本身的名称。如果程序不期望使用命名管道,即使您将其作为打开的文件句柄传递给它,它也很可能无法工作。