FUSE中的readdir和opendir有什么区别

What is the difference between readdir and opendir in FUSE

libfuse documentation中有readdiropendir作为定义的操作。

根据我的发现,readdir 将列出目录的内容。如果是这样,opendir的作用是什么?文档指出这会打开目录,但如果它不只是列出其内容,那么打开目录实际上意味着什么?

opendir 不做任何列表。它的目的是打开一个文件句柄,这是可以使用 readdir 完成列表的界面。它会检查目录路径是否存在、调用者是否有打开权限等,因此它可能 return 一个错误,以防无法进行列表。

opendir 提供的句柄用作列表状态上下文 - 它保存当前列表偏移量,可以使用 .

两者的关系对应openread。此外,这些 Fuse 函数实现了真正的 OS 函数:

https://www.gnu.org/software/libc/manual/html_node/Opening-a-Directory.html

https://www.gnu.org/software/libc/manual/html_node/Reading_002fClosing-Directory.html