1

我正在用 FUSE(Mac OS X 上的 OSXFUSE 和 Linux 上的 libfuse)编写自己的玩具文件系统。每次我挂载文件系统时,FUSE 都会调用getattr一些特殊路径,如日志所示:

[debug] trfs_getattr: called on path=/
[debug] trfs_getattr: called on path=/._.
[error] get_entry_attr: no entry at path /._.
[debug] trfs_getattr: called on path=/.hidden
[error] get_entry_attr: no entry at path /.hidden
[debug] trfs_getattr: called on path=/._.
[error] get_entry_attr: no entry at path /._.
[debug] trfs_getattr: called on path=/._.
[error] get_entry_attr: no entry at path /._.
[debug] trfs_getattr: called on path=/._.
[error] get_entry_attr: no entry at path /._.
[debug] trfs_getattr: called on path=/.hidden
[error] get_entry_attr: no entry at path /.hidden

函数trfs_getattr()是我自己实现的getattr()回调struct fuse_operations

函数get_entry_attr()用于获取文件的属性,由于在该路径找不到对应的文件而报错。

似乎 FUSE 会自动尝试调用getattr()一些特殊的隐藏文件/目录,而且这只发生在 Mac OS X 上。日志输出在 Linux 上是正常的。

问题 * 那些特殊文件是什么?* 为什么 FUSE 首先调用getattr()这些路径?* 如何在 Mac OS X 上防止这种情况发生?

4

2 回答 2

1

这些._*文件不是由 fuse 或您的文件系统直接创建的,它是 Mac OS X 的一项功能,请参阅:https ://apple.stackexchange.com/questions/14980/why-are-dot-underscore-files-created-and-how -我可以避免他们吗

于 2017-06-27T17:42:10.733 回答
0

不是Fuse,是FS本身。它使用 get_attr 检查路径中存在的文件。

于 2017-06-22T16:04:03.560 回答