我正在使用Python Fuse实现一个文件系统。一个目录只包含符号链接,因此在
现在,当我在该目录上执行
这是我的问题还是正常行为?
getattr
方法中返回S_IFLNK | 0777
。现在,当我在该目录上执行
ls
时,我注意到Linux对目录中的每个条目连续调用readlink
方法6次。这是我的问题还是正常行为?
好的,这肯定不是ls调用readlink超过一次。除非你使用了不寻常的标志?
$ls
entropy share
$ls -l
total 0
lrwxrwxrwx 1 entropy users 14 Aug 8 14:26 entropy -> /home/entropy/
lrwxrwxrwx 1 entropy users 11 Aug 8 14:18 share -> /usr/share/
$ltrace ls 2>&1 | grep readlink
$ltrace ls -l 2>&1 | grep readlink
readlink(0xbfdbb6c0, 0x9549b90, 15, 0, 0xb75ceec8) = 14
readlink(0xbfdbb6c0, 0x954a148, 12, 0xbfdbb992, 0) = 11
$
从这里看来,不带标志的ls从未调用readlink函数,只有在给定长标志时才会调用一次。我对fuse不是很了解,更不用说python fuse了。所以很遗憾,我无法回答你的原始问题,但我认为这看起来非常像你方面的错误行为,但我可能错了。
readlink
,所以我可能错了! - Wayne Werner