在Linux中,readdir
函數用于讀取目錄中的條目。它返回一個指向dirent
結構體的指針,該結構體包含了關于目錄條目的信息,如文件名、文件類型等。
dirent
結構體定義如下:
struct dirent {
long d_ino; /* Inode number */
off_t d_off; /* Offset to the next dirent */
unsigned short d_reclen; /* Length of this dirent */
unsigned char d_type; /* Type of file */
char d_name[]; /* Null-terminated filename */
};
readdir
函數的原型如下:
#include <dirent.h>
DIR *opendir(const char *name);
struct dirent *readdir(DIR *dirp);
int closedir(DIR *dirp);
readdir
函數接受一個DIR
類型的指針作為參數,該指針是通過opendir
函數打開目錄后返回的。readdir
函數返回一個指向dirent
結構體的指針,該結構體包含了目錄條目的信息。當沒有更多的目錄條目時,readdir
函數返回NULL。
需要注意的是,dirent
結構體中的d_name
成員是一個可變長度的字符數組,用于存儲目錄條目的文件名。由于它的長度是可變的,因此在處理dirent
結構體時,需要特別注意內存分配和釋放。