1.什么是文件IO:
IO就是input/output,输入输出。文件IO就是读写文件。
2.文件操作的主要接口API
(1)API是一些函数,这些函数是由linux系统提供支持的,由应用程序程序来使用。
(2)应用层程序通过调用API来调用操作系统中的各种功能来干活。
(3)学习一个操作系统,其实就是学习这个操作系统的API.
3.常用的文件IO接口
open、close、write、read、lseek
4.文件操作的一般步骤
(1)一般先open打开一个文件,得到文件描述符,在对文件进行读写操作,完成读写文件后最后close关闭文件,以免造成文件损坏。
(2)文件平时是存在块设备中的文件系统中,我们把这种文件叫静态文件。当我们去open打开一个文件时,linux内核做的操作包括:内存在进程中建立一个打开文件的数据结构,记录下我们打开的这个文件;内核在内存中申请一段内存,并却将静态文件的内容从块设备中读取到内存中特定的地址管理存放(叫动态文件)。
(3)打开文件后,对文件的读写操作都是针对动态文件进行操作。当我们对动态文件操作完成后,此时内存中的动态文件和设备快中的静态文件就不同步了,当我们close关闭动态文件时,close内部内核将内存中的动态文件的内容同步到块设备中的静态文件。
(4)常见的一些现象
第一个:打开一个大文件时比较慢。
第二个:文件写到一半,突然断电,重启文件后内容丢失。
(5)为什么要这么设置
以为块设备本身有读写限制,,本身对块设备进行操作非常不灵活。而内存可以按字节为单位来操作,而且可以随机操作(内存就叫RAM,random),很灵活。
5.文件描述符(fd,后期操作文件都是通过fd来操作)
(1)文件描述符实质就是一个数字,这个数字在一个进程中表示一个特定的含义,这个数字是和我们内存中的动态文件绑定上的,我们应用程序要操作这个动态文件,只需要用这个文件描述符区分。
(2)文件描述符就是用来区分一个程序打开的多个文件。
(3)文件描述符的作用域就是当前进程。
注意在编写应用程序时,实时查看man手册
man 1 xx :查linuxshell命令
man 2 xx:查API
man 3 xx : 查函数库