系统IO对于目录的操作
一.opendir:
函数原型:
#include <sys/types.h>
#include <dirent.h>
DIR *opendir(const char *name);
DIR *fdopendir(int fd);
函数功能:
opendir: 通过路径名打开一个目录文件, 得到目录的目录流指针
fdopendir: 通过文件描述符打开一个目录文件, 得到目录的目录流指针
参数:
name: 指定打开的目录的路径名
fd: 已经被 open 函数打开的目录的文件描述符
返回值:
成功则返回目录的流指针, 失败返回 NULL, 并且 errno 会被设置
二.closedir:
函数原型
#include <sys/types.h>
#include <dirent.h>
int closedir(DIR *dirp);
函数功能:
关闭目录流指针。
参数:
dirp: 目录流指针
返回值:
成功返回 0, 失败返回-1;
三.readdir:
函数原型
#include <dirent.h>
struct dirent *readdir(DIR *dirp);
函数功能:
每调用这个函数一次就可以读取到目录里面的一个文件的信息,通过返回值返回给我们。
参数:
dirp: 要操作的目录流指针
返回值:
成功返回一个目录结构体指针(这个结构体记录着目录里面读取到的文件信息),如果读取到目录末尾, 则返回 NULL, 但是 errno 不会被设置, 如果读取出错也返回 NULL,但是 errno 会被设置错误信息。
返回的结构体定义
类型 | 名称 | 含义 |
ino_t | d_ino | 文件节点号 |
off_t | d_off; | 目录项的偏移量 |
unsigned short | d_reclen; | 该目录项的大小 |
unsigned char | d_type; | 文件的类型 |
char | d_name[256] | 文件名 |
结构体中文件类型(d_type)
DT_BLK | 块设备类文件类型 |
DT_CHR | 字符设备类文件类型 |
DT_DIR | 目录文件类型 |
DT_FIFO | 管道文件类型 |
DT_LNK | 软链接文件类型 |
DT_REG | 常规普通文件类型 |
DT_SOCK | 套接字文件类型 |
DT_UNKNOWN | 无法识别文件类型 |
四.mkdir:
函数原型:
#include <sys/stat.h>
#include <sys/types.h>
int mkdir(const char *pathname, mode_t mode);
函数功能:
创建一个目录出来
参数:
pathname: 创建目录的路径+名字
mode: 目录的权限, 跟 open 函数的 mode 参数一样(目录也是文件, 也有权限),
注意要给执行权限
返回值:
成功返回 0, 失败返回-1, errno 会被设置