我正在使用Python Fuse实现文件系统.目录仅包含符号链接,因此我返回S_IFLNK | getattr方法上为0777.
现在,当我在目录上执行ls时,我注意到Linux对目录中的每个条目连续6次调用readlink方法.
是我这方面的错误还是正常行为?
解决方法:
好吧,绝对不是多次调用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,如果给出了long标志,则每个链接仅调用一次.我对保险丝了解不多,更不用说Python保险丝了.因此,很遗憾,我无法回答您最初的问题,只能说这看起来很像您的越野车,但我可能是错的.