在 CentOS 系統中,readdir 函數用于讀取目錄中的文件和子目錄。它通常與 opendir 和 closedir 函數一起使用。readdir 函數的返回值是一個指向 dirent 結構的指針,該結構包含有關目錄項的信息。
以下是如何使用 readdir 函數以及如何解析其返回值的示例:
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <string.h>
opendir 函數打開目錄:DIR *dir = opendir("/path/to/directory");
if (dir == NULL) {
perror("opendir");
exit(EXIT_FAILURE);
}
readdir 函數讀取目錄中的文件和子目錄:struct dirent *entry;
while ((entry = readdir(dir)) != NULL) {
// 解析返回值
}
readdir 返回的 dirent 結構:struct dirent {
long d_ino; // inode 號
off_t d_off; // 偏移量
unsigned short d_reclen; // 名稱長度
unsigned char d_type; // 類型(DT_REG, DT_DIR 等)
char d_name[]; // 文件名(以 null 結尾的字符串)
};
d_ino:文件或目錄的 inode 號。d_off:文件或目錄在目錄文件中的偏移量。d_reclen:文件名長度(不包括 null 終止符)。d_type:文件類型,例如 DT_REG(常規文件)、DT_DIR(目錄)等。d_name:文件名(以 null 結尾的字符串)。示例:打印目錄中的所有文件和子目錄名稱:
struct dirent *entry;
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
closedir 函數關閉目錄:closedir(dir);
這就是在 CentOS 系統中使用 readdir 函數及其返回值解析方法的基本概述。