当前位置: 首页 > news >正文

系统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_td_ino文件节点号
off_td_off;目录项的偏移量 
unsigned shortd_reclen;该目录项的大小
unsigned chard_type;文件的类型 
chard_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 会被设置

http://www.lryc.cn/news/592738.html

相关文章:

  • 服务器内存满了怎么清理缓存?
  • 多线程-4-线程池
  • 从零构建监控系统:先“完美设计”还是先“敏捷迭代”?
  • 内存数据库的持久化与恢复策略:数据安全性与重启速度的平衡点
  • 数据结构-3(双向链表、循环链表、栈、队列)
  • SGLang 推理框架核心组件解析:请求、内存与缓存的协同工作
  • 【PTA数据结构 | C语言版】左堆的合并操作
  • LS-DYNA分析任务耗时长,如何避免资源浪费与排队?
  • Machine Learning HW2 report:语音辨识(Hongyi Lee)
  • Glary Utilities(系统优化工具) v6.20.0.24 专业便携版
  • 【Python】一些PEP提案(三):with 语句、yield from、虚拟环境
  • [FDBUS4.2] watcher的使用
  • 利用五边形几何关系计算cos36°及推导黄金比例
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | NotesApp(便签笔记组件)
  • 深入理解 Spring:事务管理与事件机制全解析
  • 如何将本地Git仓库推送到远程仓库的一个文件中并保留Commit记录
  • 借助AI学习开源代码git0.7之三git-init-db
  • RoboBrain 2.0(具身智能论文阅读)
  • Deep Multi-scale Convolutional Neural Network for Dynamic Scene Deblurring 论文阅读
  • Visual Studio C++编译器优化等级详解:配置、原理与编码实践
  • 【iOS】消息传递和消息转发
  • gitlab-runner配置问题记录
  • 洞见AI时代数据底座的思考——YashanDB亮相2025可信数据库发展大会
  • 【C++】——类和对象(中)——默认成员函数
  • LVS(Linux Virtual Server)详细笔记(实战篇)
  • 怎么判断一个对象是不是vue的实例
  • 前端自动化测试:Jest、Puppeteer
  • Rust交叉编译自动化实战
  • 车载监控录像系统:智能安全驾驶的守护者
  • 模式结构-微服务架构设计模式