实现FUSE库时,目录的属性应由getattr()回调定义。
但是要为此st_nlink设置什么?
在此示例中,他们将其设置为2,但我不知道确切原因。
https://github.com/lxc/lxcfs/blob/2ed933d959f54bee70985e260660a468ef9d21a1/src/proc_fuse.c#L87
st_nlink的作用是什么?我的用户空间FUSE目录应默认为1还是2?
例如,如果我定义一个名为“ / dev”的目录,并且其中包含“。”,“ ..”和“ snd”子条目,那么“ / dev”的st_nlink应该为2吗?因为硬链接(条目)是/ dev / snd和/ dev / snd/。/
有趣,我确实读过以下内容。
st_nlink是文件的硬链接数。此计数保持跟踪 这个文件中有多少目录具有条目。如果计数是 递减为零,则文件本身将尽快丢弃 没有任何过程仍然保持开放。符号链接不计入 总计。
https://www.gnu.org/software/libc/manual/html_node/Attribute-Meanings.html
我假设“文件”被使用了两次,因此它的st_nlink被设置为两个。
我还假定它用于重新计数设计https://en.wikipedia.org/wiki/Reference_counting