gpt4 book ai didi

c - 列出文件的硬链接(hard link) C

转载 作者:太空宇宙 更新时间:2023-11-04 02:45:15 26 4
gpt4 key购买 nike

我需要在“纯”C 中列出给定文件的所有硬链接(hard link),因此没有 bash 命令的帮助。

我用谷歌搜索了几个小时,但找不到任何有用的东西。我目前的想法是获取 inode 编号,然后循环遍历目录以查找具有相同 inode 的文件。

在 bash 中类似

 sudo find / -inum 199053

有更好的建议吗?

谢谢

最佳答案

要获取单个文件的 inode 编号,请调用 stat函数并引用返回结构的 st_ino 值。

int result;
struct stat s;
result = stat("filename.txt", &s);
if ((result == 0) && (s.st_ino == 199053))
{
// match
}

您可以使用 opendir 使用 stat 函数构建解决方案, readdir , 和 closedir以递归方式扫描目录层次结构以查找匹配的 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;
}

关于c - 列出文件的硬链接(hard link) C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28132673/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com