open()
:打开文件函数原型
// 1、
int open(const char *pathname, int flags);
- 功能:打开一个已有文件
- 参数:pathname为文件路径
flags为对文件的操作权限 (O_RDONLY, O_WRONLY, O_RDWR)
- 返回值:成功则返回一个新的文件描述符
失败则返回-1
// 2、
int open(const char *pathname, int flags, mode_t mode);
- 功能:创建一个新文件
- 参数:pathname为文件路径
flags为对文件的操作权限 (O_RDONLY, O_WRONLY, O_RDWR, O_CREATE)
mode为八进制数,表示创建出新的文件的操作权限,比如:0777
最终权限:mode & ~umask,umask的值不同用户不一样,其目的是抹去一些权限
- 返回值:
成功则返回一个新的文件描述符
失败则返回-1
read()
:读数据ssize_t read(int fd, void *buf, size_t count);
- 功能:读数据,保存到buf内存中
- 参数:fd 文件描述符
buf 读到的数据,存放的地方(传出参数)
count 数组的大小
- 返回值:
>0 返回读取到的字节数量
=0 表示到了文件末尾,文件读取完
-1 出现了错误
write()
:写数据函数原型
ssize_t write(int fd, const void *buf, size_t count);
- 功能:将数据,写入到buf内存中
- 参数:fd 文件描述符
buf 要往磁盘写入的数据
count 要写的数据的实际的大小
- 返回值:
>0 返回读取到的字节数量
-1 出现了错误
lseek()
:对文件指针偏移off_t lseek(int fd, off_t offset, int whence);
- 功能:对文件指针进行偏移
- 参数:fd 文件描述符
offset 偏移量
whence 标志
SEEK_SET 设置文件指针的偏移量,从文件头开始
SEEK_CUR 设置文件指针的偏移量,从当前位置开始
SEEK_END 设置文件指针的偏移量,从文件尾开始,可以获取文件长度
- 返回值:返回文件指针的位置
- 作用:
1、移动文件指针到文件头
2、获取当前文件指针的位置
3、获取文件长度
4、拓展文件长度
dup()
:复制文件描述符int dup(int oldfd);
- 功能:复制文件描述符
- 参数:oldfd 旧的文件描述符
- 返回值:
成功:返回一个新的文件描述符(从空闲的文件描述符表中找一个最小的),和就的文件描述符指向同一个文件
失败:-1
dup2()
:重定向文件描述符int dup2(int oldfd, int newfd);
- 功能:重定向文件描述符
- 参数:oldfd 旧的文件描述符
newfd 新的文件描述符
- 返回值:
成功:返回一个新的文件描述符(和newfd一样),都是指向 oldfd 指向的文件
失败:-1
fcntl()
:操作文件描述符函数原型
int fcntl(int fd, int cmd, ...可变参数);
- 参数:fd 文件描述符
cmd 表示对文件描述符进行如何操作
按需添加可变参数
- cmd 可选:
F_DUPFD : 复制文件描述符,复制fd,得到一个新的文件描述符(不需要可变参数)
F_GETFL : 获取指定的文件描述符的文件状态 flag
F_SETFL : 设置文件描述符文件状态 flag (需要可变参数)
O_RDONLY、O_WRONLY、O_RDWR、O_APPEND、O_NONBLOCK(非阻塞)