Linux文件系统(四)—— open & read & write & poll

【前言】

在android系统中,userspace应用常常会获取kernel中驱动的数据信息来执行一些动作:

1. CPU权限的不同,CPU可以访问的内存空间明显是不同的。

2. linux一切皆文件,userspace app获取驱动data的方式也必须通过访问VFS才可以获取。

3. linux为我们设计好了VFS,我们在上层可以访问底层各种不同文件系统的内容。

4.userspace只需要执行read/write即可执行对文件的操作。

【open】

  •  不得不提VFS的advantage:不同文件系统打开方式不一样,上层只需傻傻调用open,linux对于程序猿还是很友好的,你负责用,其他我帮你搞定(够义气)。
  • Open的终极奥义就是返回:文件描述符,其实就是给进程关联相应的文件,这样就可以调用
#include <unistd.h>

static inline long open(const char * name, int mode, int flags) {
    return sys_open(name, mode, flags);
}

O_RDONLY         只读方式打开文件
O_WRONLY         只写方式打开文件
O_RDWR           读和写的方式打开文件

上面三个只能选择一个,下面的可以合理的任意组合:
O_CREAT            打开文件,如果文件不存在则建立文件
O_EXCL             如果已经置O_CREAT且文件存在,则强制open()失败
O_TRUNC            将文件的长度截为0
O_APPEND           强制write()从文件尾开始

对于终端文件,上面四个是无效,提供了两个新的标志:
O_NOCTTY           停止这个终端作为控制终端
O_NONBLOCK      使open()、read()、write()不被阻塞。

【read 】

【write 】

【poll】

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值