文件IO

缓存IO:

    IO数据 --->页缓存(内核) --->  应用程序的地址空间

    优点:1)缓存IO使用了操作系统内核缓冲区,在一定程度上分离了应用程序空间和实际的物理设备

               2)缓存IO可以减少读盘的次数,从而提高性能

 

    应用程序的写操作机制:  同步写机制、延迟写机制  

    如果用户采用的是同步写机制( synchronous writes ), 那么数据会立即被写回到磁盘上,应用程序会一直等到数据被写完为止。

    如果用户采用的是延迟写机制( deferred writes ),那么应用程序就完全不需要等到数据全部被写回到磁盘,数据只要被写到页缓存中去就可以了。在延迟写机制的情况下,操作系统会定期地将放在页缓存中的数据刷到磁盘上。

   与异步写机制( asynchronous writes )不同的是,延迟写机制在数据完全写到磁盘上的时候不会通知应用程序,而异步写机制在数据完全写到磁盘上的时候是会返回给应用程序的。所以延迟写机制本身是存在数据丢失的风险的,而异步写机制则不会有这方面的担心。

   函数头文件简介

   在所有的linux 系统中,如果需要对文件的进行操作,只要包含如下4 个头文件即可。
          #include <unistd.h>
         #include <sys/types.h>
         #include <sys/stat.h>
         #include <fcntl.h>
    上面四个头文件中包含了打开,关闭,创建,读文件,写文件的函数,还有标志位,以及在不同32 位以及64 位系统下数据长度的宏变量定义。

 open函数例程

int open(const char *path, int oflags,mode_t mode);

第一个参数path 表示:路径名或者文件名。路径名为绝对路径名,例如开发板中的led驱动的设备几点/dev/leds。

第二个参数oflags 表示:打开文件所采取的动作。

第三个参数mode 表示:设置创建文件的权限。 文件所属用户,文件所属组,其他用户

open函数代码:

   编译完以后 , 在开发版中的运行情况

 

实验创建函数creat 和 open

         int creat(const char * pathname, mode_t mode);

         creat 函数只有两个参数,参数的含义和open 类似。

实验-关闭函数close:

   close函数介绍

程序

实验-写函数write

实验-文件的读read函数

read 函数在头文件“#include <unistd.h>”中。
函数原型为ssize_t read(int fd,void *buf,size_t len)
               参数fd,使用open 函数打开文件之后返回的句柄。
               参数*buf,读出的数据保存的位置。
               参数len,每次最多读len 个字节。
               返回值为ssize 类型,出错会返回-1,其它数值表示实际写入的字节数,返回值大于0 小于len 的数值都是正常的。

    输出结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值