我正在实现一个基于 FUSE 的文件系统(实际上是 osxfuse,因为它在 Mac 上),我注意到在创建或 mkdir 调用之前总是调用 getattr,如果节点已经存在,则不会调用 create/mkdir。问题是,我可以依赖这种行为而不检查 create/mkdir 中是否存在吗?
无论如何我最好检查文件是否存在,因为 (a) 操作系统行为将来可能会发生变化(即您的简化稍后会起到低调的技巧),以及 (b) 通常有可能在后端存储上的 FS 之外创建文件。在后一种情况下,您依赖于不是更有效的状态。