尝试从未打开的文件中读取时,我的 libfuse 文件系统 return 应该出现哪个系统错误?

Which system error should my libfuse filesystem return when attempting to read from a file that's not open?

我正在实施一个 libfuse 文件系统。打开文件时,我读取文件属性并将它们存储在哈希值 table 中,该哈希值以我生成的文件句柄作为键值。这有两个目的:维护打开文件句柄的集合以及缓存我在打开过程中检索到的信息。

当然,没有什么可以阻止用户代码尝试传递无效的文件句柄,即从未打开的文件中读取。

我可以从 read 函数中 return 获得一些 error codes,但我不清楚在这种情况下应该使用哪个。

如您所见 in the POSIX standard,return 的正确值应该是 EBADF:

[EBADF] The fildes argument is not a valid file descriptor open for reading.

就是说,如果用户代码传递了一个无效的文件句柄,Linux 内核将 return EBADF 在你之前给用户,或者融合,获得对此事的任何发言权.