系统IO与标准IO

一、 定义

        系统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的基础上封装了缓冲机制。先读写缓冲区,必要时再访问实际文件,从而减少了系统调用的次数。
标准IO中用FILE(流)表示一个打开的文件,通常只用来访问普通文件。

        缓冲机制可分3类:全缓冲, 行缓存,无缓冲

                 全缓冲:填满标准I/O缓存区才进行实际的I/O操作。(fwrite/fread)

                 行缓存:当在遇到换行符或者缓冲区满时,标准IO库执行IO系统调用操作(printf)

                 无缓冲:标准I/O库不对字符进行缓冲存储 (标准出错)

        缓冲的作用:

        在进行数据的读写的过程中,先不把数据直接写入或者读入设备中,而是写或者读入内存空间,当满足一定条件时候,将该空间的文件写入文件或设备中。这样可以减少操作系统调用驱动程序或文件的次数,提高读写的速度,和代码的效率。因为每一次系统调用的过程都是很浪费系统资源的。

        刷新条件:

        缓冲区已满、强制刷新、程序结束、关闭文件

三、 使用系统IO与标准IO的常见步骤


设备文件:

        open打开设备文件
        mmap映射设备地址
        close关闭设备文件
        对映射的内存操作.......


普通文件:(若需要格式化输入输出)

        fopen打开普通文件
        对文件的读/写 (fscanf,fprintf,fread,fwrite........)
        fclose关闭文件

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值