目录
1. 底层文件访问和文件描述符
1.1 文件描述符
“底层”:指的是操作系统独立提供的,与标准无关。
文件描述符:系统分配给文件或套接字的整数。(在windows中被称为“句柄”)
分配给标准输入输出及标准错误的文件描述符:
文件描述符 | 对象 |
0 | 标准输入:Standard Input |
1 | 标准输出:Standard Output |
2 | 标准错误:Standard Error |
文件描述符就相当于一种编号,当你创建文件成功时,就会给这个文件赋予一个编号,一般从3开始递增。
1.2 打开文件
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
int open(const char* path,int flag);
成功返回文件描述符,失败返回-1
path:打开的目标文件名和路径信息
flag:文件打开模式
打开模式 | 含义 |
O_CREAT | 必要时创建文件 |
O_TRUNC | 删除全部现有数据 |
O_APPEND | 维持现有数据,添加的数据保存在末尾 |
O_RDONLY | 只读打开 |
O_WRONLY | 只写打开 |
O_RDWR | 读写打开 |
1.3 关闭文件
#include<unistd.h>
int close(int fd);
成功返回0,失败返回-1
fd:文件描述符参数。
此函数不仅可以关闭文件,也可以关闭套接字。
1.4 写入文件
#include<unistd.h>
ssize_t write(int fd,const void* buf,size_t nbytes);
成功则返回写入的字节数,失败返回-1
fd:文件描述符参数
buf:保存要传输数据的缓冲地址值
nbytes:要传输数据的字节数
1.5 读取文件
#include<unistd.h>
ssize_t read(int fd,void *buf,size_t nbytes);
成功则返回接收的字节数(但遇到文件结尾则返回0),失败返回-1
fd:数据接收对象的文件描述符参数
buf:保存接收数据的缓冲地址值
nbytes:要接收数据的字节数