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

3.目录操作

3.目录操作

      • **1. 目录操作**
      • **2. 改变工作目录**
      • **3. 目录创建与删除**
      • **4. 文件属性获取**
      • **5. 时间处理**
      • **6. 练习与作业**
      • **7. 其他注意事项**
      • **8. 总结**


1. 目录操作

  • opendir
    • 函数原型:DIR *opendir(const char *name);
    • 功能:打开一个目录,返回目录流指针。
    • 参数:name:目录名。
    • 返回值:成功返回目录流指针,失败返回NULL
  • readdir
    • 函数原型:struct dirent *readdir(DIR *dirp);
    • 功能:从目录流中读取文件信息,返回包含文件信息的结构体指针。
    • 参数:dirp:目录流指针。
    • 返回值:成功返回文件信息结构体指针,失败或读到目录末尾返回NULL
  • closedir
    • 函数原型:int closedir(DIR *dirp);
    • 功能:关闭目录流。
    • 参数:dirp:目录流指针。
    • 返回值:成功返回0,失败返回-1

2. 改变工作目录

  • chdir
    • 函数原型:int chdir(const char *path);
    • 功能:改变当前程序的工作目录。
    • 参数:path:目标路径。
    • 返回值:成功返回0,失败返回-1
  • getcwd
    • 函数原型:char *getcwd(char *buf, size_t size);
    • 功能:获取当前工作目录。
    • 参数:
      • buf:保存路径的缓冲区。
      • size:缓冲区大小。
    • 返回值:成功返回路径字符串指针,失败返回NULL

3. 目录创建与删除

  • mkdir
    • 函数原型:int mkdir(const char *pathname, mode_t mode);
    • 功能:创建一个目录。
    • 参数:
      • pathname:目录路径。
      • mode:目录权限(如0777)。
    • 返回值:成功返回0,失败返回-1
  • rmdir
    • 函数原型:int rmdir(const char *pathname);
    • 功能:删除一个空目录。
    • 参数:pathname:目录路径。
    • 返回值:成功返回0,失败返回-1

4. 文件属性获取

  • stat
    • 函数原型:int stat(const char *path, struct stat *buf);
    • 功能:获取文件的属性信息。
    • 参数:
      • path:文件路径。
      • buf:保存文件属性的结构体指针。
    • 返回值:成功返回0,失败返回-1
  • struct stat
    • 包含文件的详细信息,如文件类型、权限、大小、时间戳等。
    • 常用字段:
      • st_mode:文件类型和权限。
      • st_size:文件大小。
      • st_mtime:最后修改时间。

5. 时间处理

  • time
    • 函数原型:time_t time(time_t *t);
    • 功能:获取从1970年1月1日到现在的秒数。
    • 参数:t:保存秒数的变量指针。
    • 返回值:成功返回秒数,失败返回-1
  • localtime
    • 函数原型:struct tm *localtime(const time_t *timep);
    • 功能:将秒数转换为本地时间。
    • 参数:timep:秒数指针。
    • 返回值:成功返回时间结构体指针,失败返回NULL
  • ctime
    • 函数原型:char *ctime(const time_t *timep);
    • 功能:将秒数转换为可读的字符串格式。
    • 参数:timep:秒数指针。
    • 返回值:成功返回时间字符串指针,失败返回NULL
  • struct tm
    • 包含时间的详细信息,如年、月、日、时、分、秒等。

6. 练习与作业

  • 练习1:设计一个程序,每隔30秒向日志文件写入一条带有时间戳的信息。
    • 日志文件路径:/var/log/a.out.log
    • 格式:xx-xx-xx xx:xx:xx asdfasdf
  • 练习2:从键盘输入内容,显示输入内容并附加当前时间(时:分)。
    • 示例:
      1122334455
      09:56 1122334455
      
  • 作业1:统计当前系统的进程数,并记录到日志文件中。
    • 日志格式:15:20:30 当前进程数:计数
  • 作业2:设计一个程序,监控/proc目录下的进程信息,并记录到日志文件中。

7. 其他注意事项

  • 文件权限
    • 使用stat函数获取文件权限时,st_mode字段包含文件类型和权限信息。
    • 权限标志位:
      • S_IRUSR:用户读权限。
      • S_IWUSR:用户写权限。
      • S_IXUSR:用户执行权限。
      • 类似标志位适用于组和其他用户。
  • 时间戳
    • st_mtime:文件最后修改时间。
    • st_atime:文件最后访问时间。
    • st_ctime:文件状态最后改变时间。

8. 总结

通过目录操作函数(如opendirreaddirclosedir)可以遍历目录内容;通过stat函数可以获取文件的详细属性;通过时间处理函数(如timelocaltimectime)可以获取和格式化系统时间。结合这些功能,可以实现文件监控、日志记录等实用程序。


http://www.kler.cn/a/525516.html

相关文章:

  • 供应链系统设计-供应链中台系统设计(十)- 清结算中心概念片篇
  • 解决Oracle SQL语句性能问题(10.5)——常用Hint及语法(7)(其他Hint)
  • 基于Langchain-Chatchat + ChatGLM 本地部署知识库
  • 低代码产品表单渲染架构
  • C# 与.NET 日志变革:JSON 让程序“开口说清话”
  • 微服务(一)
  • 软件工程概论试题二
  • “深入浅出”系列之算法篇:(5)AIGC
  • 面试经典150题——图的广度优先搜索
  • 保姆级讲解 python之zip()方法实现矩阵行列转置
  • 【Leetcode 热题 100】32. 最长有效括号
  • 深入探讨:服务器如何响应前端请求及后端如何查看前端提交的数据
  • 大模型知识蒸馏技术(2)——蒸馏技术发展简史
  • vscode软件操作界面UI布局@各个功能区域划分及其名称称呼
  • 留学生scratch计算机haskell函数ocaml编程ruby语言prolog作业VB
  • Java实现.env文件读取敏感数据
  • Flutter 新春第一弹,Dart 宏功能推进暂停,后续专注定制数据处理支持
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.26 统计圣殿:从描述统计到推断检验
  • 安卓(android)订餐菜单【Android移动开发基础案例教程(第2版)黑马程序员】
  • arkts bridge使用示例
  • [Python学习日记-80] 用 socket 实现文件传输功能(上传下载)
  • 设计模式 - 行为模式_Template Method Pattern模板方法模式在数据处理中的应用
  • C#方法作用
  • Java基础知识总结(二十八)--可变参数(...)、静态导入、枚举
  • JMeter插件 Arrivals Thread Group 源码解析:实现原理与性能测试中的应用
  • C24.【C++ Cont】结构体