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

嵌入式开发学习日志(linux系统编程--io文件偏移函数(3)和目录)Day26

一、io文件偏移函数

1.lseek

形式:

                off_t lseek(int fd, off_t offset, int whence);

【int fd】:需要操作的文件;

【off_t offset,】:偏移量;

【 int whence】:SEEK_SET:开始;SEEK_CUR  : 文件中间(一般指文件上次操作结束时候de位置)  SEEK_END:文件末尾;

函数的返回值是偏移量;

注意:文件偏移之后如果不写入数据,则文件偏移不成功,文件大小不变;

eg:

fopen和open文件权限对应的关系

rO_RDONLY 
r+O_RDWR
wO_WRONLY|O_CREAT|O_TRUNC
w+O_RDWR|O_CREAT|O_TRUNC 
a(文件后追加读)O_WRONLY|O_CREAT|O_APPEND
a+(文件后追加读写)O_RDWR|O_CREAT|O_APPEND
fopen的操作权限默认为0666

2、fileno

形式:

                        int fileno(FILE *stream);

功能:            FILE * fp===>int fd

                 获得一个文件流指针中的文件描述符;

FILE *stream】:需要操作的文件名;

返回值: 成功返回文件描述符;

                       失败返回-1;

注意:在使用此函数的时候,文件的权限不变;

关闭文件:关闭文件时,(fclose和close都可以关闭文件),建议用封装等级高的函数关闭 fclosk           

eg:

3、fsopen

 形式:

                 FILE *fdopen(int fd, const char *mode);

参数:

                【int fd】:需要操作的文件;

                【 const char *mode】:权限和原来的文件权限对应;

功能:将文件描述符转换为文件流指针;

                      int fd ===> FILE * fp

返回值:成功返回文件流指针;

                失败返回NULL;

关闭文件:关闭文件时,(fclose和close都可以关闭文件),建议用封装等级高的函数关闭 fclosk 

eg:

 

 4、perror      系统级别报错函数;

形式:

                void perror(const char *s);

先判断是否有错,在进行打印报错信息;man 2和man 3的函数可以用;未调用函数时,返回值为success;

【error】:错误号

eg:

 文件属性

一、目录

        目录操作的步骤:

                1、打开;

                2、读取目录;

                3、关闭目录;

1、opendir

        形式:

                 DIR *opendir(const char *name);

【const char *name】:需要打开的目录名;

功能:打开一个目录,获得该目录的目录流指针;

返回值:

                成功返回值为目录流指针;

                失败返回NULL;

2、readdir

形式:

        struct dirent *readdir(DIR *dirp);

【DIR *dirp】:目录流指针;

功能:从目录流中读取文件信息,并保存的结构体信息;

返回值:为包含信息的结构体;

                出错或者读到目录流末尾,返回值为NULL;

ino_t          d_ino/* Inode number */    
 
 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]/* Null-terminated filename */文件的名字
DT_BLK块设备B
DT_CHR字符设备C
DT_DIR目录D
DT_FIFO管道P
DT_LNK软连接/符号链接L
DT_REG规则文件/普通文件-
DT_SOCK网络文件
DT_UNKNOW未知文件

eg:

 

 3、关闭文件

形式:

                 int closedir(DIR *dirp);

功能:关闭之前已经打开的目录流对象;

返回值:成功返回0     失败返回-1;

eg:

        

时间函数 

1、time

形式:

        time_t time(time_t *tloc);

【time_t *tloc】:存放秒数的空间首地址;

传参为NULL时,返回值为1970年1月1日0时0分0秒至今的秒数

2、localtime

形式:

                struct tm *localtime(const time_t *timep);

功能:将一个秒数转换为日历时间;

【const time_t *timep】:保存秒数空间的地址;

返回值:成功返回值保存日历时间结构体指针;

失败返回NULL;

 eg:

 

 总结

 

 

http://www.xdnf.cn/news/597079.html

相关文章:

  • 文件IO操作、目录操作
  • 【leetcode】3355. 零数组变换Ⅰ
  • HCIP-AI培养计划,成为新时代AI解决方案架构高级工程师
  • Metal入门,使用Metal实现纹理效果
  • SpringBoot的启动原理?
  • 若依代码生成
  • 人工智能时代:从“知识容器”到“知识地图”的认知革命
  • 芯片数据手册下载网站整理
  • 价格行为(PriceAction)复盘 - Google - 250521
  • vector
  • Python训练营---Day33
  • Unity Max SDK接入MRec广告,自定义显示位置
  • Linux spi
  • 投票合约1
  • 二叉树结构与遍历
  • 消费类,小家电产品如何做Type-C PD快充快速充电
  • Hugging Face 设置镜像源 | 下载失败 | 下载的速度很慢
  • 轴承与螺母表面缺陷数据集
  • 全栈开发中主流 AI 编程辅助工具的实践与对比分析20250522
  • 人工智能时代教育信息化领导力的培养与发展研究
  • 【知识图谱-一-综述】
  • 新一代网校培训平台的技术演进:从教育源码开发到AI赋能教学转型
  • debian12安装freeswitch1.10
  • DL00967-通过伪样本合成进行零样本侧扫声纳图像分类含完整数据集
  • Python基础学习-Day32
  • 计算机图形学Games101笔记--光线追踪。RTX ON!!!(<--删除线)
  • QT5.14版本加载在线地图(天地图)
  • 【C语言】复习~动态内存管理
  • LRU (Least Recently Used) 页面置换算法
  • 征程 6 J6E/M linear 双int16量化支持替代方案