我正在实现一个libfuse文件系统。打开文件时,我读取文件属性并将其存储在以生成的文件句柄为键的哈希表中。这有两个目的:维护打开文件句柄的集合,并缓存在打开过程中检索到的信息。
当然,没有什么能阻止用户代码尝试传递无效的文件句柄,即从未打开的文件中读取。
我可以从error codes函数中返回多个read
,但我不清楚在这种情况下哪个是预期的。
如您所见,in the POSIX standard,要返回的正确值为EBADF
:
[[EBADF] fildes参数不是为打开的有效文件描述符阅读。
也就是说,如果用户代码传递了无效的文件句柄,那么Linux内核将在您之前或将其融合为问题之前将EBADF
返回给用户。