当在当前目录中尝试mkfifo()
时,出现许可错误。我绝对有权在这里创建文件。任何想法可能是什么问题?C中的FIFO(命名管道)
char dir[FILENAME_MAX];
getcwd(dir, sizeof(dir));
for(i = 0; i<num_nodes; i++)
{
char path[FILENAME_MAX];
sprintf(path, "%s/%d",dir, i);
printf("%s\n", path);
fifoArray[i] = mkfifo(path, O_WRONLY);
if(fifoArray[i] < 0)
{
printf("Couldn't create fifo\n");
perror(NULL);
}
}
“无法创建fifo”看起来像一个错误消息。因此,它属于'stderr'。简单地写'perror(path)'会更好;'你的printf可能正在改变'errno',所以你对perror的调用给你提供了不好的信息。 –
您是否检查过“errno”设置为? – squiguy
删除printf,什么perror()打印? – pedr0