前言
大家好吖,欢迎来到 YY 滴Linux系列 ,热烈欢迎! 本章主要内容面向接触过C++的老铁
主要内容含:
欢迎订阅 YY滴C++专栏!更多干货持续更新!以下是传送门!
目录
※学习文件IO必须知道的概念
1. 认识 [ 系统调用 ] 和 [ 库函数 ]
- 在认识返回值之前,先来认识一下两个概念: 系统调用 和 库函数;许多库函数都是封装了系统调用而来
- 所以,可以认为, f#系列的函数,都是对系统调用的 封装 ,方便二次开发
- 库函数(libc):fopen,fclose,fread,fwrite等
- 系统调用接口:open,close,read,write,lseek等


2. 区分内核文件结构体file和files_struct&C标准库中文件结构体FILE
- FILE结构体:是 C标准库 中定义的一个结构体,用于表示一个打开的文件流,并封装了文件操作的相关信息。
- file结构体:它代表一个打开的文件,是Linux内核中的结构体
- 区分: files_struct结构体:是Linux内核中定义的一个结构体,用于表示 进程级别 的文件描述符表,并记录了该进程当前打开的所有文件的信息。
如下图:进程结构体task_struct有一个文件指针指向files_struct结构体,files_struct结构体经过系统调用open后生成file结构体:

3.延申:思考硬件层面与内核的交互(形成多态)
- 硬件的读写方式各有不同,通过通过特定的接口和机制(例如遵循特定的声卡驱动架构)与系统I/O进行交互
- 其中与IO口进行交互的过程中少不了与虚拟文件系统的交互
- 其中相关的部分也少不了子类继承基类实现 IO传输功能的实现


一.【库函数】回顾c语言中读写文件的方式
库函数有:库函数(libc):fopen,fclose,fread,fwrite等
- 我们观察如下打开文件的方式,有r,r+,w,w+等等选项
- 除此之外,c语言还有printf,scanf,fwrite,fprintf,fseek,ftell,rewind等等读写方式
- 底层其实都是 封装了系统接口 ,我们接下来慢慢说说
FILE *fp = fopen("myfile", "w");//写
FILE *fp = fopen("myfile", "r");//读
- 打开文件的方式
r Open text file for reading.
The stream is positioned at the beginning of the file.
r+ Open for reading and writing.
The stream is positioned at the beginning of the fil


最低0.47元/天 解锁文章
996

被折叠的 条评论
为什么被折叠?



