一、 定义
系统IO:系统IO又称文件IO,也称低级磁盘IO,属于不带缓存的IO(unbuffered I/O)。也就是一般所说的低级I/O——操作系统提供的基本IO服务,与OS绑定,特定于Linux或unix平台。是linux提供给应用程序操作文件(普通文件,设备文件)的接口
标准IO:由标准C库(第三方库)提供的接口函数(通过封装操作系统提供的系统IO,再给用户使用)
二、 区别
系统IO:不带缓冲机制,系统IO可以操作普通文件与驱动文件(设备文件,网络文件,普通文件) 通过系统IO读写文件时,每次操作都会执行相关系统调用。这样处理的好处是直接读写实际文件,坏处是频繁的系统调用会增加系统开销。
文件IO中用文件描述符表现一个打开的文件,可以访问不同类型的文件,如普通文件、设备文件和管道文件等
标准IO:带缓冲机制,是系统IO 的包装,标准IO只可以操作普通文件。提供多种的格式的输入输出如(字符串、整形......)标准IO可以看成是在文件IO的基础上封装了缓冲机制。先读写缓冲区,必要时再访问实际文件,从而减少了系统调用的次数。
缓冲机制可分3类:全缓冲, 行缓存,无缓冲
全缓冲:填满标准I/O缓存区才进行实际的I/O操作。(fwrite/fread)
行缓存:当在遇到换行符或者缓冲区满时,标准IO库执行IO系统调用操作(printf)
无缓冲:标准I/O库不对字符进行缓冲存储 (标准出错)
缓冲的作用:
在进行数据的读写的过程中,先不把数据直接写入或者读入设备中,而是写或者读入内存空间,当满足一定条件时候,将该空间的文件写入文件或设备中。这样可以减少操作系统调用驱动程序或文件的次数,提高读写的速度,和代码的效率。因为每一次系统调用的过程都是很浪费系统资源的。
刷新条件:
缓冲区已满、强制刷新、程序结束、关闭文件
三、 使用系统IO与标准IO的常见步骤
设备文件:
open打开设备文件
mmap映射设备地址
close关闭设备文件
对映射的内存操作.......
普通文件:(若需要格式化输入输出)
fopen打开普通文件
对文件的读/写 (fscanf,fprintf,fread,fwrite........)
fclose关闭文件