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

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

用于关闭目录流的函数。

1.头文件

#include <sys/types.h>

#include <dirent.h>

2.函数原型

int closedir(DIR *dirp);

3.参数

dirp: 指向 DIR 结构的指针,该结构由 opendir() 返回。它表示要关闭的目录流。

4.返回值

成功: 返回 0。失败: 返回 -1,并设置 errno 以指示错误类型。

5.示例:(打开目录,并查看目录中的文件)

#include <stdio.h>

#include <stdlib.h>

#include <sys/stat.h>

#include <dirent.h>

#include <errno.h>

#include <unistd.h>

int main(){

const char *dir_path = "directory";

struct stat statbuf;

DIR *dir;

struct dirent *entry;

int file_count=0;

printf("File name:%s\n", dir_path);

if (stat(dir_path, &statbuf) == -1) {

perror("stat");

return 1;

}

if (S_ISDIR(statbuf.st_mode)) {

printf("It's the directory: YES\n");

} else {

printf("It's the directory: NO\n");

}

dir = opendir(dir_path);

if (dir == NULL) {

perror("opendir");

return 1;

}

printf("Directory Contents:\n");

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

printf("\t%s\t%ld\n",entry->d_name,entry->d_ino);

file_count ++;

if (file_count == 3) {

printf("Resetting directory stream...\n");

rewinddir(dir);

}

}

if (errno != 0) {

perror("readdir");

closedir(dir);

return EXIT_FAILURE;

}

closedir(dir);

return 0;

}

接下来需要自行创建directory文件夹,下图是directory文件夹结构:

$ tree directory/

directory/

├── 1

├── 2

├── 3

├── 4.txt

├── 5.txt

└── 6.txt

3 directories, 3 files

6.查看执行结果

File name:directory

It's the directory: YES

Directory Contents:

1 5255834

3 5255836

6.txt 5255839

Resetting directory stream...

1 5255834

3 5255836

6.txt 5255839

.. 5255821

5.txt 5255838

2 5255835

4.txt 5255837

. 5255833

可以看到,首先打印出来要检查的directory文件名,之后检查directory文件为文件夹,在之后开始打印文件夹中的内容,当DIR 结构体的指针指向第三个文件后,使用rewinddir()函数重置目录流,直到打印完毕directory文件夹中的内容。同时我们也看到文件并不是按规律打印出来的,也印证了前面介绍的文件存储顺序取决于文件系统向该目录添加文件时所遵循的顺序,和在文件被删除以后对目录列表中空隙的填补方式,并不是使用ls命令查看到的有序排列的顺序。

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

相关文章:

  • 华为:共建鸿蒙世界,鸿蒙生态向前再迈一步!
  • 破解物流分拣效率瓶颈: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协同运行,真实工程项目稳定运行一年多供...
  • Demo 骗了所有人?一做就会,一用就废!多模态 RAG 跨不过去的这道坎,看透了!
  • 通过合理建模与架构设计,90% 的“JOIN 需求”可转化为 ES 原生支持的高效查询。