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

Linux操作系统应用编程——文件IO

文件描述符

        文件描述符:操作系统中已打开文件的标识符,是小的、非负的整型数据

        范围:0-1023(共1024个)

        分配原则:最小未被使用原则,而系统默认已经打开的三个文件占用了0、1、2这三个文件描述符,所以先分配3,再4

        与标准IO的区别在于,标准IO操作的是文件流指针FILE*,文件IO操作的是文件描述符,而且这个文件流指针FILE指向一个复杂的结构体,结构体中含有文件描述符

        文件描述符泄漏:已打开的文件,使用完时,未及时关闭

操作函数

open

        需包含额外头文件

        功能:打开文件并获得一个文件描述符

        参数:

                pathname:要打开的文件的文件名

                flags:打开方式

        其中的|为按位或的运算符

                mode:对文件的操作权限,为八进制数,对应的权限,有则为1无则为0

操作权限rwxrwxrwxrw-rw-r--
对应二进制111111111110110100
对应八进制07770664

                然而,就算mode为0777,最后一组rwx也不会完整,因为被创建的文件mode会与掩码值的反码进行位运算,得出一个新的mode值

        返回值:成功则为文件描述符,失败则为-1

        只读方式需要文件存在才可读,所以一开始会报错,创建后成功。由于文件描述符最多为1023,所以打开完文件后要及时关闭,避免造成文件描述符泄漏

close

        需包含头文件

        功能:关闭文件

        参数:文件标识符

write

        需额外包含头文件

        功能:向文件中写入数据

        参数:文件描述符;要写入的数据的首地址;要写入的字节数

        返回值:成功则为实际写入的字节数,失败则为-1

        前面已经说了,012自动占了三个文件标识符位置,所以若要向终端写入数据时,则不需要额外打开,只需要将fd位置改为1即可,而此时终端为输出设备,判断输入输出的对象是内存,从内存中出来为输出,存入内存中是输入

read

        功能:从文件中读取数据

        参数:文件描述符;存储数据的空间首地址;希望读取的字节数

        返回值:成功则为实际读到的字节数,失败则为-1,若是读到文件末尾则为0

实现cat功能

        对于部分大文件,需要反复读取,如果字节数不是缓冲区字节数的整数倍,则会造成越界访问,出现乱码,所以可通过write读写read的返回值

文件定位函数

lseek

        功能:文件读写位置定位

        参数:文件描述符;偏移量(字节);要偏移的相对位置

        返回值:成功则为当前读写位置到文件开头的偏移量,失败则为-1

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

相关文章:

  • LCP 17. 速算机器人
  • 车载软件架构 --- MCU刷写擦除相关疑问?
  • 无法将顶级控件添加到控件
  • EM系列储能网关4G升级:开箱即用的4G上云体验
  • 【97页PPT】智慧工厂数字化智能化车间规划与建设(附下载方式)
  • elasticsearch mapping和template解析(自动分词)!
  • 2.Cursor高阶技巧使用
  • JMeter 测试 WebSocket 接口的详细教程
  • window如何安装sqlite3数据库
  • Python实战教程:PDF文档自动化编辑与图表绘制全攻略
  • 在前端js中使用jsPDF或react-to-pdf生成pdf文件时,不使用默认下载,而是存储到服务器
  • 数据类型 set
  • 顺序表 —— OJ题
  • AJAX:让你的网页“静悄悄”变聪明,体验丝滑升级
  • 15.卷积神经网络
  • 图像分割-动手学计算机视觉9
  • ZED 2i相机调试
  • 以鼠标位置为中心进行滚动缩放
  • CSS counter-reset 与 counter-increment:用 CSS 实现自动编号的黑科技
  • 【日常学习】2025-8-13
  • HTML <iframe> 标签 如何把html写入iframe标签
  • 更友好的并发库conc介绍
  • 七猫免费小说
  • 【117页PPT】企业数字化转型物流信息化咨询项目规划方案(附下载方式)
  • day20
  • Qwen-Image(阿里通义千问)技术浅析(二)
  • GDB命令笔记
  • Windows也能用!Claude Code硬核指南
  • 2021 年全国硕士研究生招生考试真题笔记
  • 基于DDPG的车辆纵向速度控制优化:兼顾速度与乘坐舒适性