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

系统编程——文件IO

一、文件io

1.lseek : off_t lseek(int fd, off_t offset, int whence);
(1)功能:
定位光标的位置
(2)参数:
1)fd:文件描述符
2)offset:偏移量
正:向后偏移
负:向前偏移
零:不偏移
3)whence:
SEEK_SET
SEEK_CUR
SEEK_END
4)返回值:成功返回偏移量,失败返回-1
(3)注意:
1)不支持O_APPEND的追加模式,无法生成空洞文件。
2)lseek函数执行失败,文件指针还在偏移前的位置。
3)lseek函数在设备文件上偏移无效。

(4)阻塞:程序因为某种条件没有被触发,而导致'0'   '\0'
(5)面试题:文件IO的文件描述符最大值是多少? 

          答:1024 个,范围0-1023 

2.fileno

(1)FILE* fp -> int fd     fgets(,);
int fileno(FILE *stream);
(2)功能:获得一个文件流指针中的文件描述符
(3)参数:stream:文件流指针
(4)返回值:成功返回文件描述符,失败返回-1

3.fdopen

(1) int fd -> FILE *fp
FILE *fdopen(int fd, const char *mode);
(2)功能:将文件描述符转化为文件流指针
(3)参数:

        1)fd:已经打开的文件描述符
2)mode:
"r"
"r+"
"w"
"w+"
"a"
"a+"
(4) 返回值:成功返回文件流指针
失败返回NULL

二、文件目录操作

1.打开目录(opendir):DIR *opendir(const char *name);
(1)功能:打开一个目录获得一个目录流指针
(2)参数 : name:目录名
(3)返回值:成功返回目录流指针,失败返回NULL

2.读取目录(readdir):struct dirent *readdir(DIR *dirp);
(1)功能:从目录流中读取文件信息并将保存信息的结构体地址返回
(2)参数:dirp:目录流指针
(3)返回值:包含文件信息的结构体,出错或者读到目录流末尾返回NULL

3.关闭目录(closedir): int closedir(DIR *dirp);
(1)功能:关闭之前已经打开的目录流对象
(2)参数:opendir的返回结果中目录流对象
(3)返回值:成功  0,失败   -1

4.获取秒数
(1)time
time_t time(time_t *t);
time_t tm;
time(&tm)

        tm = time(NULL);
1)功能:获得1970年到现在的秒数
2)参数:
1)t:存放秒数的空间首地址
2)返回值:成功返回1970年到现在的秒数,失败返回-1

2.localtime:struct tm *localtime(const time_t *timep);
(1)功能:将一个秒数转化成日历时间
(2)参数:timep:保存秒数空间的地址
(3)返回值:成功返回保存日历时间结构体的指针,失败返回NULL

4.文件类型:

top:当前运行的程序有多少个

http://www.dtcms.com/a/298409.html

相关文章:

  • Effective C++ 条款01:视 C++ 为一个语言联邦
  • day33:零基础学嵌入式之网络——HTTP服务端
  • 某AI智能问答系统规划与设计
  • 【Java】JVM虚拟机(基本概念、类加载机制)
  • 苍穹外卖笔记集锦
  • 函数f(int a,int b),a和b的地址关系?
  • 《使用Qt Quick从零构建AI螺丝瑕疵检测系统》——5. 集成OpenCV:让程序拥有“视力”
  • 【NetTopologySuite库】使用Polygonizer线构面,并获取割边、悬挂边、无效环
  • ✨ 使用 Flask 实现头像文件上传与加载功能
  • TIM 实现定时中断【STM32L4】【实操】
  • 原生微信小程序如何调整开发版本
  • 全面解析MySQL(3)——CRUD进阶与数据库约束:构建健壮数据系统的基石
  • 数仓主题域划分
  • 机器学习(一)KNN,K近邻算法(K-Nearest Neighbors)
  • 不用电脑要不要关机?
  • win通过OpenSSL生成.ssh id_rsa密钥方法
  • 反射和SPI
  • 【DeepRare】疾病识别召回率100%
  • Haprxy七层代理
  • 呼叫中心系统管理权限功能配置
  • 深度学习篇---图片分辨率
  • Agentic RAG理解和简易实现
  • AMD官网下载失败,不让账户登录下载
  • 集合专题之Map
  • Kimi K2 大语言模型技术特性与应用实践分析
  • 初识opencv04——图像预处理3
  • 太极生两仪,两仪生四象,四象生八卦
  • mybatisX的自定义模板生成
  • 【深基12.例1】部分背包问题 Java
  • docker 挂载卷