文件 IO1. 文件从哪来?1.1 针对设备上存储的文件1.2 针对内核提供的虚拟文件系统1.3 针对特殊文件-设备节点2. 怎么访问文件?2.1 通用的 IO 模型:open/read/write/lseek/close2.2 不是通用的函数:ioctl/mmap3. 系统调用函数怎么进入内核?4. 内核的 sys_open、sys_read 会做什么?
文件 IO
在 Linux 系统中,一切都是“文件” :普通文件、 驱动程序、网络通信等等。 所有的操作,都是通过“文件 IO”来操作的。所以,很有必要掌握文件操作的常用接口。
1. 文件从哪来?
1.1 针对设备上存储的文件
这些文件以某种格式保存在某个设备上,要先 mount,以 SD卡挂载为例“
- sd 卡接入后,串口打印设备计入信息,为mmcblk0 P1 分区
- 确认具体接入设备,并挂载设备
- 查看设备挂载情况,发现设备已挂载在最后
1.2 针对内核提供的虚拟文件系统
查看内核系统,其自动挂载。如何自动挂载要掌握根文件系统知识。
也可以同样使用挂载命令
mount -t sysfs none /mnt。1.3 针对特殊文件-设备节点

哪个驱动由主设备号确定
哪个硬件由次设备号确定
2. 怎么访问文件?
2.1 通用的 IO 模型:open/read/write/lseek/close
涉及知识点
- man 命令查询相关函数帮助,确定引入的头文件
int main(int argc, char** argv)变长参数
open/read/write/lseek/close使用
2.2 不是通用的函数:ioctl/mmap
在 Linux 中,还可以把一个文件的所有内容映射到内存,然后直接读写内存即可读写文件。
3. 系统调用函数怎么进入内核?

4. 内核的 sys_open、sys_read 会做什么?

文件 IO.drawio
- Author:felixfixit
- URL:http://www.felixmicrospace.top/article/linux_file_io
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!

