-
open函数
函数原型:#include<fcntl.h> int open (const char *pathname ,int flag , . . . /* mode_t mode */ )
需要注意的是,flag参数主要有下面的几个选择:
1、O_RDONLY 、 只读 | O_WRONLY 只写 | O_RDWR 读写打开;
2、O_APPEND 追加的方式打开;
3、O_CREAT 文件不存在的话,先创建文件 ,需要第三个参数指定文件的访问权限;
4、O_EXCL flag参数值为 O_CREAT | O_EXCL 时,文件已经存在会报错,可以使用此来判断文件是不是存在;
5、其他的不太常用; -
creat函数
函数原型:#include<fcntl.h> int creat(const char * pathname ,mode_t mode);
此函数等效于 :
open(pathname, O_WRONLY | O_CREAT | O_TRUNC , mode)
表示打开的文件描述只能写 ; -
close 函数
#include<unistd.h> int close(int fd);
关闭文件描述符
-
lseek函数
函数原型 :#include <unistd.h> off_t lseek(int fd , off_t offset ,int whence);
lseek函数可以显示地为打开的文件设置其偏移量。
函数参数(whence):
1、SEEK_SET 表示设置文件的偏移为距文件开始处offset个字节;
2、SEEK_CUR表示设置文件的偏移为距当前位置处offset个字节;
3、SEEK_END表示设置文件的偏移为距文件结尾处offset个字节;
成功执行后,返回的是新的文件偏移; -
read 、 write函数
函数原型 :#include <unistd.h> ssize_t read(int fd , void * buf , size_t nbytes); ssize_t write(int fd,const void * buf ,size_t nbytes);
-
原子操作函数 pread 、 pwrite函数
函数原型:#include <unistd.h> ssize_t pread(int fd , void * buf ,size_t nbytes , off_t offset); ssize_t pwrite(int fd ,const void * buf ,size_t nbytes ,off_t offset);
上面两个函数相当于分别调用了lseek函数 和read 、 write函数,但是同时也有下列重要的区别:
- 调用pread、pwrite时,无法中断其定位和读操作;
- 不更新文件指针;
-
dup 、 dup2函数
函数原型:#include <unistd.h> int dup(int fd) ; // 返回一个新的文件描述符 ,表示和fd打开同一个文件 int dup2(int fd1,fd2); // 指定文件描述值fd2,表示和fd1打开的是同一个文件描述符,假设fd2已达开,则先关闭。
-
sync 、fsync 、fdatasync函数
函数用处:
更新缓冲,确保磁盘上实际的问价 系统与缓冲区高速缓存中内容的一致性。
函数原型:#include <unistd.h> void sync(void); // 将所有修改过的块缓冲区排入写队列,就返回,并不等待实际的写操作; int fsync(int fd); // 只对fd文件指定的单一文件起作用,并且等待写操作完成之后结束; int fdatasync(int fd); //只对文件的数据部分。而除数据外,fsync还会更新文件属性。
文件IO
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...