ls命令如何查找硬链接计数?

时间:2016-02-12 02:17:17

标签: c linux

命令ls -l如何计算inode的硬链接数? 它是使用Linux API还是需要更深入了解Linux内核源代码的代码?

我还不能理解ls的源代码,因为我刚开始学习C语言。

2 个答案:

答案 0 :(得分:3)

调用stat获取有关该文件的信息(在struct stat中)。然后,它会查看st_nlink的{​​{1}}字段。

答案 1 :(得分:1)

这是一个真实的简单程序,用于说明stat()用户查找硬链接计数:

#include <stdio.h>
#include <sys/stat.h>

int main ( int argc, char ** argv ) {
    int     i;
    struct stat st;     /* stat puts info here */

    for (i = 1; i < argc; ++i) {
        if (stat(argv[i], &st) == -1) perror(argv[i]);
        else printf("%s has %d hard links\n", argv[i], st.st_nlink);
    }
    return 0;
}

(在命令行上传递一个或多个文件名)