提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、open函数
- 函数原型
int open(const char* pathname, int flags);//用于打开一个已存在的文件
int open(const char* pathname, int flags,mode_t mode);//用于新建一个文件, 并设置访问权限
- 返回值 : 失败返回-1,成功返回一个文件描述符。
- 参数介绍:
(想要打开一个文件,我们要知道这个文件在哪(路径),还要知道对这个文件执行什么操作(flags),还要设置它的权限(mode))
(1)pathname:文件路径,如果在当前目录下就是文件名。
(2)flags:执行的操作,读,写,读写,创建……
O_RDONLY 只读打开
O_WRONLY 只写打开
O_RDWR 读写打开
还可以与下面的结合,用 | 结合
O_CREAT 文件不存在就创建
O_APPEND 文件末尾追加
O_TRUNC 清空文件,重新写入
(3)mode:文件的权限。使用man 帮助手册可以查看。
二、read函数
三、write函数
四、close函数
五、其他与文件有关的系统调用
1. lseek函数
(1)函数功能:
调整读写的位置,就像移动鼠标光标一样。C库的标准io函数里面有一个fseek函数,也是用于调整读写位置的,fseek就是对lseek系统函数封装后实现的。
(2)返回值:
调用成功:返回当前读写位置相对于文件开始位置的偏移量(字节)。 可以使用lseek函数获取文件的大小,将文件读写的位置移动到最末尾,然后获取返回值,这个返回值就是文件头与文件尾之间的字节数,也就是文件的大小。
调用失败:返回-1,并给errno设置错误号。
(3)参数:
off_t lseek(int fd, off_t offset, int whence);
1)fd:文件描述符,指向打开的文件
2)whence:
粗定位,选项有:
SEEK_SET:调到文件起始位置
SEEK_CUR:调到文件当前读写的位置
SEEK_END:调到文件末尾位置
3)offset:
精定位:微调位置
从whence指定的位置,向前或者向后移动指定字节数。
为负数:向前移动指定字节数
为正数:向后移动指定字节数
不过当whence被指定为SEEK_SET时,如果offset被指定为负数的话,
是没有意义,因为已经到文件头上了,在向前移动就越界了,不再当
前文件的范围内了,如果非要向前调整,lseek函数会报错。