商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > readdir如何获取inode号

readdir如何获取inode号

  发布于2026-07-15 阅读(0)

扫一扫,手机访问

在Linux环境下,`readdir`函数是遍历目录时最常用的工具之一。不过,它本身并不直接返回文件的inode号——这倒不是设计缺陷,而是职责划分:`readdir`只管把目录项枚举出来,更底层的元数据信息,得交给其他系统调用。 那么,想要拿到目录中每个文件的inode号,该怎么组合操作?下面通过一个完整示例来说明。

readdir如何获取inode号

思路其实很简单:先用`opendir`打开目录,再用`readdir`逐条读取目录项,对每个条目,利用`stat`函数获取文件状态,其中`st_ino`字段就是inode号。当然,这里有一个关键点——`readdir`返回的`d_name`只是文件名,需要拼接出完整路径才能传给`stat`。 下面是一段C语言示例代码,拿来就能用: ```c #include #include #include #include #include int main(int argc, char *argv[]) { if (argc != 2) { fprintf(stderr, "Usage: %s \n", argv[0]); return 1; } DIR *dir = opendir(argv[1]); if (dir == NULL) { perror("opendir"); return 1; } struct dirent *entry; while ((entry = readdir(dir)) != NULL) { struct stat file_stat; char path[PATH_MAX]; snprintf(path, sizeof(path), "%s/%s", argv[1], entry->d_name); if (stat(path, &file_stat) == -1) { perror("stat"); continue; } printf("File: %s, Inode: %lu\n", entry->d_name, (unsigned long)file_stat.st_ino); } closedir(dir); return 0; } ``` 这个程序接受一个目录路径作为命令行参数,遍历其中所有条目(包括`.`和`..`),对每个文件调用`stat`,然后输出文件名和对应的inode号。编译运行后,效果类似这样: ``` $ gcc inode_example.c -o inode_example $ ./inode_example /path/to/directory File: file1.txt, Inode: 1234567 File: file2.txt, Inode: 2345678 ... ``` 需要说明的是,这段代码是针对Linux系统的。在其他类Unix系统(比如macOS)上,头文件或某些接口的细节可能略有差异,但核心思路是一致的——`readdir` + `stat` 组合,就能拿到inode号。
本文转载于:https://www.yisu.com/ask/37360848.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注