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

文件io ,缓冲区

文件IO:系统调用

Linux内核专门为应用层提供的文件操作方法。

1.打开文件open

2.读、写文件read/write

3.关闭文件close

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

int open(const char *pathname,int flags);

int open(const char *pathname, int flags, mode_t mode);

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

参数:

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

flags:打开方式

O_RDONLY:只读方式

O_WRONLY:只写方式

O_RDWR:可读可写

O_CREAT:创建文件

O_TRUNC:清空文件

O_APPEND:追加写

mode:文件读写执行操作权限

rwxrwxrwx

111111111--->0777

r w-rw-r--

110110100 --->0664

返回值:

成功:文件描述符

失败:-1

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

    范围:0-1023(共1024个)

    分配原则:最小未被使用原则

    系统默认已经打开的三个文件占用了0(标准输入设备),1(标准输出设  备),2标准出错设备)这三个文件描述符

    已打开文件需及时关闭,否则文件描述符使用完时会造成文件描述符泄漏

ssize_t write(int fd, const void *buf, size_t count);

功能:向文件中写入数据

参数:

 fd:文件描述符

buf:要写入的数据的首地址

count:要写入的字节数

返回值:

成功:实际写入的字节数

失败:-1

ssize_tread(int fd, void *buf, size_t count);

功能:从文件中读取数据

参数:

fd:文件描述符

buf:存储数据的空间首地址

count:希望读取的字节数

返回值:

成功:实际读到的字节数

失败:-1

读到文件末末尾:0

2025年8月12日

15:48

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

功能:文件读写位置定位

参数:

fd:文件描述符

offset:偏移量(字节)

whence:要偏移的相对位置

SEEK_SET:文件开头位置

SEEK_CUR:文件当前读写位置

SEEK_END:文件末尾

返回值:

成功:返回当前读写位置到文件开头的偏移量

失败:-1

标准IO

1.属于C库函数,移植性强

2.标准IO是系统调用的一次封装,增加了缓冲区,目的是提高数据读写的效率

3.标准IO主要用在对普通文件的操作

文件IO

1.属于系统调用,只能用于Linux操作系统,移植性弱

2.文件IO无缓冲区

3.文件IO主要应用在对硬件的操作上,也可以操作普通文件

2025年8月12日

16:43

缓冲区:

1.行缓冲 1k(1024字节))-----》人家交互界面、终端

      缓冲区被刷新的方法:

  • 程序结束,自动刷新缓冲区
  • 遇到\n刷新
  • fflush()强制刷新
  • 缓冲区满刷新

2.全缓冲 4k(4096字节)-----》文件缓冲区

缓冲区被刷新的方法:

  • 程序结束,自动刷新缓冲区
  • fflush()强制刷新
  • 文件关闭刷新
  • 缓冲区满刷新

3.无缓冲 0k-------》出错信息对应的设备

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

相关文章:

  • 【智慧城市】2025年湖北大学暑期实训优秀作品(3):基于WebGIS的南京市古遗迹旅游管理系统
  • 简单的双向循环链表实现与使用指南
  • 小黑课堂计算机一级Office题库安装包2.93_Win中文_计算机二级考试_安装教程
  • 使用shell脚本执行需要root权限操作,解决APK只有系统权限问题
  • mysql参数调优之 sync_binlog (二)
  • 计算机网络摘星题库800题笔记 第2章 物理层
  • 防御保护11
  • Flutter GridView的基本使用
  • 17、CryptoMamba论文笔记
  • 基于大数据的在线教育评估系统 Python+Django+Vue.js
  • scikit-learn/sklearn学习|岭回归python代码解读
  • CVPR 2025丨机器人如何做看懂世界
  • 全面解析远程桌面:功能实现、性能优化与安全防护全攻略
  • 第十篇:3D模型性能优化:从入门到实践
  • AWT与Swing深度对比:架构差异、迁移实战与性能优化
  • 自己动手造个球平衡机器人
  • 基于 gRPC 的接口设计、性能优化与生产实践
  • open Euler--单master部署集群k8s
  • 【能耗监控数据聚合处理策略应用】
  • IIS 多用户环境中判断服务器是否为开发用电脑,数据状态比较
  • GeoScene 空间大数据产品使用入门(2)数据资源
  • 英伟达被约谈?国产替代迎来新机遇
  • 中国网络安全处罚综合研究报告(2020-2025)
  • 项目部署总结
  • iceberg FlinkSQL 特性
  • 什么是分布式,它有哪些功能和应用场景
  • 如何在idea中导入外来文件
  • 呼吸道病原体检测需求激增,呼吸道快检试纸条诊断试剂生产厂家推荐,默克全链解决方案助IVD企业把握百亿风口
  • Protocol Buffers(Protobuf) 详解
  • SQL注入学习笔记