1.opendir
- 功能:打开目录流
- 原型:
DIR* opendir(const char* path)
- 参数:
1) path - 返回值:
成功:返回指向目录流的 DIR* 指针
失败:NULL, 并且设置 errno
2.readdir
- 功能:读取下一个目录项
- 原型:
struct dirent* readdir(DIR* pdir)
- 参数:
1) DIR* stream - 返回值:
成功:返回struct dirent* pdirent, 若读到目录项流的末尾,返回 NULL
失败:NULL, 并且会设置 errno - struct dirent元素:
1)d_ino
2)d_name
3)d_type
3.closedir
- 功能:关闭目录流
- 原型:
int closedir(DIR* pdir)
- 参数:
1) pdir - 返回值:
成功:返回0
失败:-1, 并且设置 errno
DO
#include <func.h>
int main(int argc, char* argv[]) {
// ./dirent dir
if (argc != 2) {
error(1, 0, "Usage: %s dir", argv[0]);
}
DIR* stream = opendir(argv[1]);
if (!stream) {
error(1, errno, "opendir %s", argv[1]);
}
errno = 0;
struct dirent* pdirent;
while ((pdirent = readdir(stream)) != NULL) {
printf("d_ino = %ld, d_off = %ld, d_reclen = %hu, d_typ = %d, d_name = %s\n",
pdirent->d_ino,
pdirent->d_off,
pdirent->d_reclen,
pdirent->d_type,
pdirent->d_name);
}
closedir(stream);
if (errno) {
error(1, errno, "readdir");
}
return 0;
}