linux 目录操作
目录结构 dirent
struct dirent {
ino_t d_ino; /* inode number */
off_t d_off; /* offset to the next dirent */
unsigned short d_reclen; /* length of this record */
unsigned char d_type; /* type of file; not supported
by all file system types */
char d_name[256]; /* filename */
};
打开一个目录 opendir
#include <sys/types.h>
#include <dirent.h>
DIR *pdir=opendir(const char *name); 获取目录文件名获取目录信息
name=文件名
pdir=目录流指针,NULL=失败,非NULL=成功
DIR *pdir=fdopendir(int fd); 根据目录名获取目录信息
fd=文件描述符
pdir=目录流指针,NULL=失败,非NULL=成功
读取目录内容: readdir
#include <dirent.h>
struct dirent *pdir=readdir(DIR *dirp); //从目录流中获取目录的结构指针
dirp=目录流指针
pdir=目录结构指针,NULL=失败,非NULL=成功
int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result);
重设置目录流指针指向起始位置 rewinddir
#include <sys/types.h>
#include <dirent.h>
void rewinddir(DIR *dirp); //设置目录流指针指向目录文件的起始位置
dirp=目录流指针
获取当前目录流指针位置 telldir
#include <dirent.h>
long ldirp=telldir(DIR *dirp);
dirp=目录流指针
目录流文件指向下 offset 个目录元素 seekdir
#include <dirent.h>
void seekdir(DIR *dirp, long offset); 一般配合 telldir 使用
dirp=目录流指针
offset=目录指针后移元素个数
查找指定目录是否包含目录名 scandir
#include <dirent.h>
int scandir(const char *dirp, struct dirent ***namelist, int (*filter)(const struct dirent *),int (*compar)(const struct dirent **, const struct dirent **));
dirp=目录流指针
int alphasort(const void *a, const void *b);
int versionsort(const void *a, const void *b);
关闭目录流指针 closedir
#include <sys/types.h>
#include <dirent.h>
int ret=closedir(DIR *dirp);
dirp=目录流指针
ret:

浙公网安备 33010602011771号