C 中的FILE结构通常称为 thefile handle并且是围绕文件描述符的一些抽象:
数据类型 FILE 是包含有关文件或指定数据流的信息的结构。它包括诸如文件描述符、当前位置、状态标志等信息。它最常用作指向文件类型的指针,因为文件 I/O 函数主要将指针作为参数,而不是结构本身。
我手头没有内核构建环境,但应该有一个解释该选项的帮助文本,根据快速搜索应该说如下:
CONFIG_FHANDLE - 由 fhandle 系统调用打开 -
如果您在此处选择 Y,则用户级程序将能够将文件名映射到句柄,然后稍后将句柄用于不同的文件系统操作。这在实现用户空间文件服务器时很有用,它现在使用句柄而不是名称来跟踪文件。即使文件名被重命名,句柄也将保持不变。启用 open_by_handle_at(2) 和 name_to_handle_at(2) 系统调用。
基本上它增加了对新的/额外的系统调用的支持。
您可能会从此处看到一些信息。
通常,文件描述符是内核驻留数据结构中条目的索引,其中包含所有打开文件的详细信息。在 POSIX 中,这种数据结构称为文件描述符表,每个进程都有自己的文件描述符表。用户应用程序通过系统调用将抽象密钥传递给内核,内核将根据密钥代表应用程序访问文件。应用程序本身不能直接读取或写入文件描述符表。
在类 Unix 系统中,文件描述符可以指文件、目录、块或字符设备(也称为“特殊文件”)、套接字、FIFO(也称为命名管道)或未命名管道。
C 标准 I/O 库例程中的 FILE * 文件句柄在技术上是指向由这些库例程管理的数据结构的指针;这些结构之一通常包括类 Unix 系统上所讨论对象的实际低级文件描述符。由于文件句柄指的是这个附加层,它不能与文件描述符互换。