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:
- 如果 whence 是 SEEK_SET,文件偏移量将被设置为 offset。
- 如果 whence 是 SEEK_CUR,文件偏移量将被设置为 cfo 加上 offset,
offset 可以为正也可以为负。 - 如果 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