Liunx文件的IO操作

open函数

包含所需头文件

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

函数原型

int open(const char*pathname,int flags);
int open(const char*pathname,int flags,mode_t mode);

参数说明:
其中参数一为文件的路径
flags:

  • O_RDONLY: 只读打开
  • O_WRONLY: 只写打开
  • O_RDWR: 读,写打开 这三个常量,必须制定一个且只能指定一个
  • O_CREAT: 若文件不存在,则创建它,需要同时说明第三个参数mode,用其说明该文件的存取许可权限
  • O_EXCL: 如果同时制定了O_CREAT 而文件已经存在则出错
  • O_APPEND:每次写时都加到文件的尾端
  • O_TRUNC:属性去打开文件时,如果这个文件中本来是有内容的,而且为只读或只写成功打开,则将其长度截短为0

Mode:一定是在flags中使用了O_CREAT标志,Mode记录创建文件的访问权限
返回值:成功返回文件描述符,失败返回-1

write函数

包含所需头文件

#include<unistd.h>

函数原型

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

参数说明:
参数一为文件描述符,参数二一般为字符串,参数三为写入数据的长度
返回值:成功返回写入的字节数,失败返回-1,并设置errno

read函数

包含所需头文件

#include<unistd.h>

函数原型

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

参数说明:
参数一为文件描述符,参数二为读出数据的缓冲区,参数三为读出数据的长度
返回值:成功返回读出的字节数,失败返回-1,并设置errno,如果在调用read之前在文件末尾则返回0
阻塞问题
https://blog.csdn.net/xiaolei251990/article/details/83586973

lseek函数

包含所需头文件

#include <unistd.h>
#include <sys/types.h>

函数原型
off_t lseek(int filedes, off_t offset, int whence);
参数 offset 的含义取决于参数 whence:

  1. 如果 whence 是 SEEK_SET,文件偏移量将被设置为 offset。
  2. 如果 whence 是 SEEK_CUR,文件偏移量将被设置为 cfo 加上 offset,
    offset 可以为正也可以为负。
  3. 如果 whence 是 SEEK_END,文件偏移量将被设置为文件长度加上 offset,
    offset 可以为正也可以为负。

SEEK_SET、SEEK_CUR 和 SEEK_END 是 System V 引入的,在这之前使用的是 0、1 和 2。
一般在write之后光标在末尾,这时想读取数据应将光标移到首段。
返回值:成功返回偏移量,失败返回-1,并设置errno,用SEEK_END检测偏移量可以用来查看文件大小
如果参数 fd(文件描述符)指定的是 pipe(管道)、FIFO 或者 socket,lseek 返回 -1 并且置 errno 为ESPIPE。

close函数

包含头文件

#include<unistd.h>

函数原型

int close(int fd);

参数说明:
fd:是需要关闭的文件描述符
返回值:成功:返回0;失败:返回-1,并设置errno

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值