C库函数_linux中的系统io函数_学习笔记

C语言中的C库函数

linux中的系统io函数和C语言中的C库函数都是相对应的。
C库函数_linux中的系统io函数_学习笔记
除了fopen和fclose之外,其余的C库函数都需要用到文件指针。

FILE *fp文件指针

FILE文件指针是一个结构体,文件描述符、文件读写位置指针、io缓冲区

文件描述符

文件描述符:用来索引对应的磁盘文件。
C库函数_linux中的系统io函数_学习笔记

文件读写位置指针

文件在打开之后,会有一个文件指针,指向文件的起始位置(最开始的时候)。当写入一些数据之后,文件指针就会移动,写到哪,就移动到哪。
错误:文件打开之后,往里面写数据,紧接着就读数据,但是读不到,原因就是文件指针已经在文件末尾,当然读不到。
需要重置文件指针的位置。fseek重置。

io缓冲区*****不需要用户去关心

linux的系统函数,没有这个缓存,需要用户来提供。
在标准的C库函数中,都提供了对应的io缓冲区–保存了一块内存的地址。默认的大小是8kbit
为什么需要io缓冲区?为了减少对硬盘操作的次数。
getc每次读的字符都会先放到缓冲区里面,缓冲区满了之后,才会放到硬盘里面。
C库函数_linux中的系统io函数_学习笔记
硬盘的读写比内存慢多了,低一百万倍。
C库函数_linux中的系统io函数_学习笔记

缓存区的数据存入硬盘的情况

fflush将缓存区的数据写到硬盘上。
C库函数_linux中的系统io函数_学习笔记