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

飞凌嵌入式ElfBoard-打开目录readdir

1.头文件

#include <dirent.h>

2.函数原型

struct dirent *readdir(DIR *dirp);

3.参数

dirp:指向由 opendir() 返回的 DIR 结构体的指针,用于表示打开的目录流。

4.返回值

成功:返回指向 dirent 结构体的指针,该结构体包含目录项的信息。

结束或错误:当目录项读取完毕或发生错误时,返回 NULL。通常,readdir 返回 NULL 表示目录读取结束,或者遇到错误时可以通过 errno 获取更多信息。

注:

流是抽象的一个数据通道,目录流(DIR 类型的对象)是一个表示打开目录的抽象数据通道。通过这个流,我们可以按顺序读取目录中的每一个条目。

下面就来介绍一下struct dirent结构体:

struct dirent {

ino_t d_ino; /* Inode 编号 */

off_t d_off; /* Not an offset; see below */

unsigned short d_reclen; /* Length of this record */

unsigned char d_type; /* Type of file; not supported by all filesystem types */

char d_name[256]; /* 文件名 */

};

在这个结构体中,需要重点关注的是d_ino和d_name这两个字段即可,其余的字段一般是用不上,所以不用重点关注。

每调用一次readdir函数,就会从drip所指向的目录有中读取下一条目录项,并返回一个struct dirent结构体指针,指向经静态分配而得的 struct dirent 类型结构,每次调用 readdir()都会覆盖该结构。一旦遇到目录结尾或是出错,readdir()将返回 NULL,针对后一种情况,还会设置 errno 以示具体错误。

这时就有问题了,什么时候是指向了目录的末尾,什么时候是出错了呢?以下给出代码参考进行判断:

struct dirent *entry;

// 读取目录项

while ((entry = readdir(dir)) != NULL) {

// 打印目录项名称

printf("Name: %s\n", entry->d_name);

}

// 检查是否有读取错误

if (errno != 0) {

perror("readdir");

closedir(dir);

return EXIT_FAILURE;

}

需要注意的是,在使用readdir()函数时,返回的内容并非是使用文件名进行排序的,而是取决于文件系统向该目录添加文件时所遵循的顺序,和在文件被删除以后对目录列表中空隙的填补方式进行排序。

http://www.jsqmd.com/news/211148/

相关文章:

  • 售价1499元起 华为MatePadSE搭载鸿蒙OS2亮相
  • 飞凌嵌入式ElfBoard-打开目录closedir
  • 华为:共建鸿蒙世界,鸿蒙生态向前再迈一步!
  • 破解物流分拣效率瓶颈:ARM工控机驱动的智能调度方案深度解析
  • 降本增效新范式:Linux预测性维护在水务行业
  • 中专计算机专业毕业可从事的工作方向
  • ARM嵌入式调试核心技巧:深入解析`__asm volatile(“bkpt 0“)`
  • 企业微信外部群消息主动推送开发指南
  • 冷热电联供系统优化:用粒子群算法实现多目标优化
  • 数据在田间思考:ARM边缘网关实现灌溉的秒级决策与控制
  • 别让你的才华埋没在二流公司!向量数据库 Top 1 正在等你,这波风口别错过!
  • 基于企业微信 API 的外部群消息异步推送机制实现
  • 从“云端”到“身边”:ARM边缘计算让传统产业更智能
  • 基于java的城市公交在线查询系统
  • 上下文直接暴增 16 倍!Meta 惊人操作揭秘:这才是 RAG Context Engineering 的天花板!
  • 《创业之路》-813-如何发现和定义价值?ToB和ToC的价值有哪些区别?ToB和ToC有哪些亘古不变的常见的价值需求?
  • 大模型落地第一步就错?LLM、RAG、Workflow、Agent 怎么选?这篇救你的命!
  • 深度测评自考必备!9款AI论文软件TOP9全对比
  • 类型断言:强制类型转换的技巧
  • 敏捷冲刺计划完全指南:理论框架、实践方法与工具体系
  • 大数据与财务管理专业就业岗位方向
  • 2kW 单向 Boost PFC + 全桥 LLC 串联谐振开关电源的 Matlab/Simulink 仿真探索
  • 贝佐斯/比尔盖茨/英伟达/英特尔等押注,NASA工程师带队打造通用机器人大脑,公司估值达20亿美元
  • WBS工作分解结构:从0掌握项目拆解核心方法与工具实战
  • 特斯拉Model3智能网联汽车自动驾驶虚拟教学实训软件
  • 基于Java的仓库管理系统设计与实现
  • 【vLLM 学习】Rlhf
  • 【光子AI / Photon AI】整理2021~2026 在 AI Agent、Multi-Agent Systems、多智能体学习、多智能体强化学习、协同智能/代理型智能体 等方向的 Papers
  • 枚举类型:常量集合的优雅管理
  • 无人值守智能污水处理控制系统:威纶通触摸屏与西门子PLC协同运行,真实工程项目稳定运行一年多供...