linux系统中的IO

前言

linux系统中所有的I/O 操作都是通过读文件或者写文件的方式来完成的。linux系统中,把键盘、显示器和其他所有的外围设备都看成是文件系统中的文件。
(在linux系统中,一切皆文件。)
【直接IO】
数据直接在磁盘和应用程序地址空间之间进行传输。
【缓存IO】
磁盘和应用程序地址空间的数据传输需要经过系统内核缓存空间。

文件操作函数

打开文件

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

  • 参数path
    路径名或者文件名。路径名为绝对路径名。
  • 参数oflags
    打开文件所采取的动作。
    下面三个选项是必须选择其中之一:
    O_RDONLY:文件只读
    O_WRONLY :文件只写
    O_RDWR :文件可读可写
    下面是可以任意选择的:
    O_APPEND :每次写操作都写入文件的末尾
    O_CREAT :如果指定文件不存在,则创建这个文件
    O_EXCL :如果要创建的文件已存在,则返回-1,并且修改errno 的值
    O_TRUNC :如果文件存在,并且以只写/读写方式打开,则清空文件全部内容
    O_NOCTTY :如果路径名指向终端设备,不要把这个设备用作控制终端。
    O_NONBLOCK: 如果路径名指向FIFO/块文件/字符文件,则把文件的打开和后继续将I/O设置为非阻塞模式(nonblocking mode)
    O_NDELAY :和O_NONBLOCK 功能类似,调用O_NDELAY 和使用的O_NONBLOCK: 功能是一样的。
  • 参数mode
    当文件不存在时,该函数有创建文件的概念,此参数用于设置创建文件的权限。
    user权限:
    S_IRWXU 00700 user (file owner) has read, write, and execute permission
    S_IRUSR 00400 user has read permission
    S_IWUSR 00200 user has write permission
    S_IXUSR 00100 user has execute permission
    组权限:
    S_IRWXG 00070 group has read, write, and execute permission
    S_IRGRP 00040 group has read permission
    S_IWGRP 00020 group has write permission
    S_IXGRP 00010 group has execute permission
    其他用户权限:
    S_IRWXO 00007 others have read, write, and execute permission
    S_IROTH 00004 others have read permission
    S_IWOTH 00002 others have write permission
    S_IXOTH 00001 others have execute permission

关闭文件

int close(int fd);
调用close 函数之后,会取消open 函数建立的映射关系,句柄将不再有效,占用的空间将被系统释放。

写入数据

ssize_t write(int fd,const void *buf,size_t count)

  • 参数fd
    使用open 函数打开文件之后返回的句柄。
  • 参数*buf
    需要写入的数据。
  • 参数count
    将参数*buf 中最多count 个字节写入文件中。
  • 返回值
    ssize 类型,出错会返回-1,其它数值表示实际写入的字节数。

读取数据

ssize_t read(int fd,void *buf,size_t len)

  • 参数fd
    使用open 函数打开文件之后返回的句柄。
  • 参数*buf
    读出的数据保存的位置。
  • 参数len
    每次最多读len 个字节。
  • 返回值
    ssize 类型,出错会返回-1,其它数值表示实际读出的字节数,返回值大于0 小于len 的数值都是正常的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值