mkfifo 函数有 2 个参数,路径和模式。但我不知道它使用的路径格式是什么。我正在编写一个小程序来创建命名管道并作为mkfifo
. 使用/home/username/Documents
例如,但它总是返回 -1 和 message Error creating the named pipe.: File exists
。
我检查了这个目录很多次,里面没有管道。所以我想知道是什么问题。我在 mkfifo 中使用的模式是 0666 或 0777。
mkfifo 函数有 2 个参数,路径和模式。但我不知道它使用的路径格式是什么。我正在编写一个小程序来创建命名管道并作为mkfifo
. 使用/home/username/Documents
例如,但它总是返回 -1 和 message Error creating the named pipe.: File exists
。
我检查了这个目录很多次,里面没有管道。所以我想知道是什么问题。我在 mkfifo 中使用的模式是 0666 或 0777。
您给出mkfifo()
了现有目录的名称,因此出现了错误。您必须给它一个不存在的文件的名称,例如
mkfifo("/home/username/Documents/myfifo", 0600);
'path' 参数mkfifo()
必须指定完整路径、目录和文件名。
因此,它将是:
char *myfifo="/home/username/Documents/mypipe";
mkfifo(myfifo, 0777);
作为旁注,您应该避免使用八进制权限位并改用命名常量(来自sys/stat.h
),所以:
mkfifo(myfifo, S_IRWXU | S_IRWXG | S_IRWXO);