为什么Linux下没有用于打开功能的O_SEARCH标志?

MiD*_*MiD 5 unix linux

假设我需要获取仅具有执行(或搜索)权限的文件(或目录)的文件描述符.

X/Open规范为open()函数定义了一个O_SEARCH标志.请参见http://pubs.opengroup.org/onlinepubs/9699919799/functions/open.html

但是,Linux没有.只有3个可用标志(O_RDONLY,O_WRONLY和O_RDWR).见http://man7.org/linux/man-pages/man2/open.2.html

为什么?我怎样才能获得仅具有搜索权限的目录的fd?

谢谢

MiD*_*MiD 3

事实证明,Linux 还不支持这个标志,正如 W. Richard Stevens Stephen A. Rago 的书《UNIX 环境中的高级编程》中所述,您可以在此处查看该书的链接到google books 上的书

实际上,该标志是在 POSIX 中定义的,在标准 C 库中实现(在本例中是 glibc,这就是您在 man 3 open 下找到它的原因),但在 Linux 内核中没有实现(因此在 man 2 open 下找不到)。

编辑 1:由于我们在 Linux 下使用 GNU,因此它包含 Linux 的特定标头,以便能够进行 Linux 可行的适当系统调用(在本例中,除了 fcntl.h 之外,它还包含 fcntl-linux.h)。

编辑2:错误票 https://sourceware.org/bugzilla/show_bug.cgi?id=18228

如果我错了,请纠正我!

  • 这让我非常感动。Glibc 声称它符合 POSIX.1,尽管 POSIX.1 明确定义了 O_SEARCH 标志而 glibc 没有... (2认同)