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:

 

posted @ 2021-12-19 15:43  愿得入睡  阅读(160)  评论(0)    收藏  举报