第九章学习笔记

I/O库函数是一系列文件操作函数,既方便用户使用,又提高了整体效率

 

I/O库函数与系统调用

系统调用函数:open()read()write()lseek()close()

I/O库函数:fopen()fread()ferite()fseek()fclose()

每个I/O库函数的根都在对应的系统调用函数中。

 

I/O库函数算法

fread()算法:

fread()使用之前得到的fd使用read()发出系统调用,填充file结构体中的fbuff[];

初始化fbuff[]指针、计数器和状态变量;

将数据复制到程序缓冲区;

若内部缓冲没有足够的数据,则使用read()继续填充内部缓冲区,并将数据从内部缓冲区复制到程序缓冲区;

复制完之后,更新内部缓冲区的指针、计数器,为下次read()做准备;

2fwrite算法

fread算法相似,数据传输方向不一样。

3fclose算法

若文件以写的方式被打开,fclose()会先关闭文件流的局部缓冲区。然后,它会发出一个close(fd)系统调用来关闭FILE结构体中的文件描述符。最后,它会释放FILE结构体并将FILE指针重置为NULL

 

使用I/O库函数或系统调用

fread()依赖read()将数据从内核赋值到内部缓冲区,然后从内部缓冲区将数据复制到程序缓冲区,他传输了两次数据相反,read()将数据从内核直接复制到程序的缓冲区,只复制一次。若不以BLKSIZE为单位进行R/W,则fread()fwrite()更高效。

 

I/O库模式

"r+":表示读/写,不会截断文件。

"w+":表示读/写,但是会先截断文件;如果文件不存在,会创建文件。

"a+":表示通过追加进行读/;如果文件不存在,会创建文件。

 

编程实践与截图

读取文件

 

posted @ 2022-09-11 19:58  20201214罗云帆  阅读(13)  评论(0编辑  收藏  举报