【发布时间】:2012-10-30 16:15:10
【问题描述】:
我在当前目录中尝试mkfifo() 时遇到权限错误。我绝对有权在这里创建文件。知道可能是什么问题吗?
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);
}
}
【问题讨论】:
-
“无法创建先进先出”似乎是一条错误消息。因此,它属于
stderr。最好直接写perror( path );你的 printf 可能正在改变errno,所以你对 perror 的调用是给你错误的信息。 -
您检查过
errno的设置吗? -
去掉printf,perror()打印什么?
-
文件系统是什么?
-
似乎 mkfifo 的第二个参数不正确,请。将调用更改为 fifoArray[i] = mkfifo(path,S_IRWXU );
标签: c named-pipes fifo mkfifo