目录

如何读取目录的内容?

通过direct来查找答案:man -k direct

过滤出包含read的主题: man -k direct | grep read

查看一下readdir的man手册:

#include <dirent.h>
struct dirent *readdir(DIR *dirp);
// 返回一个dirent结构体,表示dirp当中的下一个目录项

glibc当中的目录项定义:

struct dirent {
      ino_t          d_ino;       /* Inode number */
      off_t          d_off;       /* Not an offset; see below */
      unsigned short d_reclen;    /* Length of this record */
      unsigned char  d_type;      /* Type of file; not supported
                                              by all filesystem types */
      char           d_name[256]; /* Null-terminated filename */
};

注意:

目录相关API:

#include <sys/types.h>
#include <dirent.h>
// 打开name对应的目录流,返回一个流对象DIR
DIR *opendir(const char *name);  
DIR *fdopendir(int fd);

// 从dirp的流当中读取一个目录项,失败返回NULL
struct dirent *readdir (DIR *__dirp)

// 关闭流,失败返回0,成功返回-1
int closedir (DIR *__dirp)

文件属性