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

嵌入式开发学习(第三阶段第四天 Linux系统开发)

第四天:linux系统开发

目录操作

什么是目录?

在linux操作系统中其实目录也是一种文件,相对于普通文件,它的存储内容不同,它的存储内容主要是当前目录下的文件以及子目录文件信息。 目录就像是一颗大树,从根

目录就像是一颗大树,从根处分开很多分支,Linux 系统中所有文件都存在根目录下,根目录以 “/” 表示。而关于目录的操作主要有打开,遍历和关闭等。

目录的操作

什么是目录

目录在Linux系统中可被视为一个特殊的文件,与一般文件相比目录的存储内容不是数据而是文件或者子目录及其信息。

主要操作(目录遍历)

操作流程
打开目录,获取目录指针

函数名opendir

函数头文件#include <sys/types.h>

include<dirent.h>

函数原型:DIR * opendir(const char * name);

函数功能:打开 name 指定的目录

函数参数:1.name:要操作的目录名;2. DIR * 详细内容请查看相关数据结构体 说明部分

函数返回值:成功:返回DIR* 目录流

​ 错误:返回NULL,并将错误码存放于errno 里

读取目录内容
readdir

函数头文件#include <sys/types.h>

include<dirent.h>

函数原型 struct dirent * readdir(DIR * dir);

函数功能 遍历文件目录

函数参数 dir:要操作的目录流指针;

​ struct dirent * 详见相关数据结构体说明部分

函数返回值成功:用于描述一个目录项信息的指针,隐藏的位置指针会指向下一个目录项错误发生或读取到目录尾则返回NULL并将错误码存入 errno 中

关闭目录,释放目录指针

函数名closedir

函数头文件#include <sys/types.h>

include<dirent.h>

函数原型: int closedir(DIR *dir);

函数功能: 关闭参数dir所指的目录流

函数参数: dir:要操作的目录流指针;

函数返回值:成功,返回0

​ 失败返回-1,并将错误码放入 errno

目录创建

函数头文件#include <sys/stat>

#include<sya/types>

函数原型 int mkdir(const char * pathname,mode_t mode);

函数功能 目录创建

函数参数 pathname:要创建的目录名;

​ mode:目录的操作权限:

函数返回值 成功:返回0

​ 出错:返回 -1,并将错误码存入 errno 中

删除空目录

函数头文件#include <unistd.h>

函数原型 int rmdir(const char * dirname);

函数功能 删除一个空目录

函数参数 dirname:要操作的目录名;

函数返回值 成功:返回0

​ 出错:返回 -1,并将错误码存入 errno 中

删除目录

函数头文件#include <stdio.h>

函数原型 int remove(const char * pathname);

函数功能 删除一个空目录,当pathname为一个文件则调用unlink来删除,如果是一个目录,则调用rmdir 来删除。

函数参数 pathname:要操作的文件或者目录名;

函数返回值 成功:返回0

​ 出错:返回 -1,并将错误码存入 errno 中

目录的更名(mv)

函数头文件#include <stdio.h>

函数原型 int rename(const char * oldpath, const char * newpath);

函数功能 重命名一个文件或者目录,如果oldpath 和 newpath 所指向的路径不是同一级目录,就移动文件

函数参数 oldpath:要更名的文件或者目录名;

​ newpath:更名后的文件或者目录名

​ **注意:**如果oldpath指定的是一个目录,在newpath所指向的目录要么不存在,要么是个空目录

函数返回值 成功:返回0

​ 出错:返回 -1,并将错误码存入 errno 中

相关数据结构体说明

  struct __dirstream
{void     *__fd;             /* `struct hurd_fd' pointer for descriptor.   */char     *__data;                 /* Directory block.   */int     __entry_data;  /* Entry number `__data' corresponds to.   */char     *__ptr;                   /* Current pointer into the block.   */int       __entry_ptr;     /* Entry number `__ptr' corresponds to.   */size_t  __allocation;           /* Space allocated for the block.   */size_t  __size;                      /* Total valid data in the block.   */__libc_lock_define (, __lock)   /* Mutex lock for this structure.   */
};
typedef struct __dirstream DIR; 
http://www.dtcms.com/a/323891.html

相关文章:

  • 每日任务day0810:小小勇者成长记之武器精炼
  • Docker部署到实战
  • Java 大视界 -- Java 大数据机器学习模型在电商商品销量预测与库存精准管理中的应用(391)
  • Pytorch进阶-timm库-00快速开始
  • AI大模型 教师方向应用探索
  • 联合理解生成的关键拼图?腾讯发布X-Omni:强化学习让离散自回归生成方法重焕生机,轻松渲染长文本图像
  • 机械学习--DBSCAN 算法(附实战案例)
  • 基于梅特卡夫定律的开源链动2+1模式AI智能名片S2B2C商城小程序价值重构研究
  • Jenkins | 账号及权限管理
  • Python爬虫实战:研究Ruia框架,构建博客园文章采集系统
  • 【Elasticsearch入门到落地】16、RestClient查询文档-快速入门
  • AIStarter:全网唯一跨平台桌面AI管理工具,支持Windows、Mac和Linux一键部署
  • 滚动条开始滚动时,左侧导航固定,当左侧内容触底到footer时左侧内容取消固定并跟随滚动条滚动
  • ADK【4】内置前端调用流程
  • TDengine IDMP 快速体验(方式二 通过 docker)
  • 安全引导功能及ATF的启动过程(五)
  • Linux 虚拟机磁盘空间占满-全面清理方案
  • GoBy 工具联动 | GoBy AWVS 自动化漏扫工作流
  • [论文阅读] 人工智能 + 软件工程 | 大型语言模型对决传统方法:多语言漏洞修复能力大比拼
  • Kafka 生产者与消费者分区策略全解析:从原理到实践
  • 音视频学习(五十一):AAC编码器
  • Samba使用
  • java常见算法
  • 前端开发的奇技淫巧 --- 持续更新中
  • 《P3403 跳楼机》
  • 搭建本地 Git 服务器
  • Beelzebub靶机攻略
  • 昼夜节律修复方案(2025.08.10-08.17)
  • 基于python高校固定资产管理系统
  • vue3项目中在一个组件中点击了该组件中的一个按钮,那么如何去触发另一个组件中的事件?