Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos FUSE在Mac上的特殊路径上调用getattr_Macos_Fuse_Osxfuse - Fatal编程技术网

Macos FUSE在Mac上的特殊路径上调用getattr

Macos FUSE在Mac上的特殊路径上调用getattr,macos,fuse,osxfuse,Macos,Fuse,Osxfuse,我正在用FUSE编写自己的玩具文件系统(MacOSX上的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

我正在用FUSE编写自己的玩具文件系统(MacOSX上的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\u getattr()
是我自己在
struct fuse\u操作中实现的
getattr()
回调

函数
get\u entry\u attr()
用于获取文件的属性,它报告错误,因为它无法在该路径上找到相应的文件

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

问题 *那些特殊文件是什么? *为什么FUSE首先在这些路径上调用
getattr()

*如何在Mac OS X上防止这种情况?

它不是保险丝,而是FS本身。
它使用get\u attr检查路径中存在的文件。

那些
\u*
文件不是由fuse或您的文件系统直接创建的,这是Mac OS X的一项功能,请参阅:

为什么您认为在装入卷时是fuse而不是OS这样做?你为什么要阻止它?你为什么在乎?就像任何其他尝试访问不存在的文件一样失败。当然,您的文件系统实现必须处理这个问题。