O_PATH
打开模式,它实际上并没有打开文件(即不创建打开文件描述符),而是提供一个指向未打开目标的句柄文件描述符。它的主要用途是作为*at
函数(如openat
等)的参数,并且似乎适用于实现先前Linux缺少的POSIX 2008 O_SEARCH
功能。但是,我无法找到有关O_PATH
确切语义的任何好的文档。我有几个具体的问题:
- 在Linux
O_PATH
文件描述符上可以进行哪些操作?(仅限*at
函数?) O_PATH
是否对非目录有用?- 文件描述符如何绑定到基础文件系统对象,如果移动、删除等会发生什么?
O_PATH
文件描述符是否计算为引用,防止对象在最后一个链接取消链接时被释放?等等。
cap_get_fd
和cap_set_fd
进行的能力。但是这并没有起作用,我收到了一个坏的文件描述符错误。太糟糕了。 - MvG/proc/self/fd/
条目上使用cap_get_file
和cap_set_file
以使用你打开的O_PATH
文件描述符吗?这似乎是一个解决方法,可以绕过内核所有无法直接使用O_PATH
文件描述符的问题。而且,该proc
条目永久钉在 inode 上(虽然它在目录列表中显示为符号链接,但实际上并不是),因此这种方法与直接使用文件描述符一样没有竞争条件。 - R.. GitHub STOP HELPING ICE