readdir
函數是用于讀取目錄內容的函數,通常在 POSIX 兼容的系統(如 Linux 和 macOS)中使用。它的原型定義在 <dirent.h>
頭文件中。readdir
函數的參數如下:
struct dirent *readdir(DIR *dirp);
DIR *dirp
:這是一個指向 DIR
類型的指針,表示要讀取的目錄流。在使用 readdir
之前,必須先通過調用 opendir
函數打開目錄,并返回一個有效的 DIR
指針。readdir
函數沒有返回值。如果成功,它返回一個指向 struct dirent
結構的指針,該結構包含有關目錄中下一個條目的信息。如果到達目錄的末尾或發生錯誤,則返回 NULL
。
struct dirent
結構通常包含以下字段:
long d_ino
:文件的 inode 號。off_t d_off
:偏移量,用于下次讀取。unsigned short d_reclen
:d_name 字段的長度。char d_name[]
:以 null 結尾的文件名。請注意,readdir
函數的使用可能會受到線程安全性的影響,因為在多線程環境中,多個線程可能同時訪問同一個目錄流。在這種情況下,需要使用適當的同步機制來避免競爭條件。