我需要在" pure"中列出给定文件的所有硬链接。 C,所以没有bash命令的帮助。
我用谷歌搜索了好几个小时但却找不到任何有用的东西。 我目前的想法是获取inode号然后循环遍历目录以查找具有相同inode的文件。用bash之类的东西
sudo find / -inum 199053
有什么更好的建议吗?
由于
答案 0 :(得分:2)
要获取单个文件的inode编号,请调用stat函数并引用返回的struct的st_ino值。
int result;
struct stat s;
result = stat("filename.txt", &s);
if ((result == 0) && (s.st_ino == 199053))
{
// match
}
您可以使用opendir,readdir和closedir使用stat函数构建解决方案,以递归方式扫描目录层次结构以查找匹配的inode值。
您还可以使用scandir扫描整个目录:
int filter(const struct dirent* entry)
{
return (entry->d_ino == 199053) ? 1 : 0;
}
int main()
{
struct dirent **namelist = NULL;
scandir("/home/selbie", &namelist, filter, NULL);
free(namelist);
return 0;
}