c – open(“/ tmp”,O_RDWR | O_TMPFILE,0)失败,权限被拒绝

我正在尝试使用打开临时文件

fd = open("/tmp", O_RDWR | O_TMPFILE, 0);
if (fd == -1) {
    perror("open()");
    exit(1);
}

我正在“开放():权限被拒绝”.

我在/ tmp中有权限:

drwxrwxrwt  13 root root 1.2K Apr 23 13:55 /tmp/

而且我相信我的内核对O_TMPFILE来说足够新了:

Linux frosties 3.14-1-amd64 #1 SMP Debian 3.14.2-1 (2014-04-28) x86_64 GNU/Linux

我错过了什么?

最佳答案 调用失败,因为您指定了模式0,这意味着没有权限.有关Linux内核的此行为的讨论,请参阅
this LWN article,以及明显的错误修正.

点赞