mkfifo函数有两个参数,path和mode。但是我不知道它使用的路径的格式是什么。我正在写一个小程序,在mkfifo
中创建命名管道和as路径。例如,使用/home/username/Documents
,但它总是返回-1和消息Error creating the named pipe.: File exists
。
我已经检查过这个目录很多次了,里面没有管道。所以我想知道问题出在哪里。我在mkfifo中使用的模式是0666或0777。
发布于 2012-10-24 06:07:01
您为mkfifo()
提供了一个现有目录的名称,因此出现错误。您必须为其指定一个不存在的文件的名称,例如
mkfifo("/home/username/Documents/myfifo", 0600);
发布于 2012-10-24 06:08:22
mkfifo()
的' path‘参数必须指定完整路径、目录和文件名。
因此,它将是:
char *myfifo="/home/username/Documents/mypipe";
mkfifo(myfifo, 0777);
另外,您应该避免使用八进制权限位,而应使用命名常量(来自sys/stat.h
),因此:
mkfifo(myfifo, S_IRWXU | S_IRWXG | S_IRWXO);
https://stackoverflow.com/questions/13040021
复制相似问题