当前位置: 首页 > 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.xdnf.cn/news/1273609.html

相关文章:

  • 复现论文《基于深度强化学习的微能源网能量管理与优化策略研究》
  • 【渲染流水线】[几何阶段]-[归一化NDC]以UnityURP为例
  • 【每天一个知识点】深度领域对抗神经网络
  • WPFC#超市管理系统(5)商品布局、顾客登录、商品下单
  • 【C++详解】红黑树规则讲解与模拟实现(内附红黑树插入操作思维导图)
  • ES 调优帖:Gateway 批量写入性能优化实践
  • C语言基础05——指针
  • 计算机视觉全景指南:从OpenCV预处理到YOLOv8实战,解锁多模态AI时代(第五章)
  • MVC结构变种——第三章核心视图及控制器的整体逻辑
  • 机器学习——TF-IDF 衡量词语在文档中重要程度
  • Java 日常开发笔记(小程序页面交互传参-id)
  • ​LabVIEW键盘鼠标监控
  • 分享一个基于Python和Hadoop的的电信客户特征可视化分析平台 基于Spark平台的电信客服数据存储与处理系统源码
  • 【Python练习】086. 编写一个函数,实现简单的DHCP服务器功能
  • 刑法视野下的虚拟财产属性争议:法律风险与市场潜力解析
  • Delphi 中的字符串类型 string 详解
  • 【0基础PS】PS工具详解--缩放工具
  • Beelzebub靶机攻略
  • 【Linux | 网络】数据链路层
  • PHP版本控制系统:高效文档管理
  • 从MySQL到大数据平台:基于Spark的离线分析实战指南
  • 5Python异常处理与模块导入全指南
  • 元数据管理与数据治理平台:Apache Atlas 分类传播 Classification Propagation
  • vue中使用h5plus
  • 【Elasticsearch入门到落地】16、RestClient查询文档-快速入门
  • Java Stream流详解:从基础语法到实战应用
  • spring-ai整合PGVector实现RAG
  • 【代码随想录day 15】 力扣 257. 二叉树的所有路径
  • uni-app 网络请求终极选型:uni.request、axios、uni-network、alova 谁才是你的真命请求库?
  • LeetCode_字符串