opendir/fdopendir/closedir/readdir/rewinddir/telldir/seekdir
#include
#include
DIR *opendir(const char *name);
功能:打开一个目录流
返回值:目录流(链表)
DIR *fdopendir(int fd);
功能:使用文件描述获取目录流,fd必须是目录流
struct dirent *readdir(DIR *dirp);
功能:从目录流中读取一个文件结点信息
返回值:成功则返回下个目录进入点. 有错误发生或读取到目录文件尾则返回NULL.
struct dirent {
ino_t d_ino; /* inode number */ i节点号
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 */ 文件的名字
};
DT_BLK This is a block device.这是一个块设备。
DT_CHR This is a character device.这是一个字符设备。
DT_DIR This is a directory.这是一个目录。
DT_FIFO This is a named pipe (FIFO).这是一个命名管道(FIFO)。
DT_LNK This is a symbolic link.这是一个符号链接。
DT_REG This is a regular file.这是一个标准文件。
DT_SOCK This is a UNIX domain socket.这是一个Unix域套接字。
DT_UNKNOWN The file type is unknown.文件类型未知。
void rewinddir(DIR *dirp);
功能:把目录流的位置指针调整到开头
long telldir(DIR *dirp);
功能:获取当前目录流的位置指针在第几个结点
void seekdir(DIR *dirp, long offset);
功能:调整当前目录流的位置指针
offset:telldir(dir)的返回值的下一个位置(但和百度百科有冲突,可以自行测试)
int closedir(DIR *dirp);
功能:关闭目录流
参考源自:Linux丰富的帮助手册。终端执行man opendir和man readdir,即可找到相关资料
相关应用参考:高仿linux下的ls -l命令——C语言实现