Linux readdir的返回值解析

Linux readdir的返回值解析

linux系統中,readdir()函數用于遍歷指定目錄下的內容。其函數聲明如下:

#include <dirent.h>  struct dirent *readdir(DIR *dirp); </dirent.h>

該函數接收一個指向DIR結構體指針作為參數,表示已經打開的目錄流。函數執行后將返回一個指向dirent結構體的指針,其中包含了當前目錄項的相關信息。

dirent結構體的主要成員包括:

struct dirent {     long d_ino;             // inode編號     off_t d_off;            // 目錄流中的偏移位置     unsigned short d_reclen; // 文件名長度     char d_name[];          // 文件名稱字符串 };

當readdir()成功讀取到目錄項時,會返回指向dirent結構體的有效指針;若讀取失敗或已到達目錄末尾,則返回NULL值。

下面展示了一個簡單的readdir()使用示例:

#include <stdio.h> #include <stdlib.h> #include <dirent.h> #include <string.h>  int main() {     DIR *dir;     struct dirent *entry;      dir = opendir("."); // 打開當前工作目錄     if (dir == NULL) {         perror("opendir");         exit(EXIT_FAILURE);     }      while ((entry = readdir(dir)) != NULL) {         printf("文件項名稱: %sn", entry->d_name);     }      closedir(dir);     return 0; } </string.h></dirent.h></stdlib.h></stdio.h>

此程序首先調用opendir()嘗試打開當前目錄,并對返回的目錄流指針進行有效性檢查。隨后通過循環調用readdir()逐個獲取目錄項,在獲取不到更多目錄項(返回NULL)時結束循環。每個獲取到的目錄項的文件名都會被打印輸出。最后調用closedir()關閉之前打開的目錄流資源。

? 版權聲明
THE END
喜歡就支持一下吧
點贊15 分享