文件 I/O 函数

1. int open(const char *pathname,int oflag, ... /* mode_t mode */);

头文件:#include<fcntl.h>

功能:打开或创建一个文件

返回值:若成功则返回文件描述符,出错则返回-1

oflag取值:O_RDONLY , O_WRONLY , O_RDWR , O_APPEND , O_CREAT , O_EXCL , O_TRUNC , O_NOCTTY ,O_NONBLOCK , O_DSYNC ,O_RSYNC , O_SYNC

O_DSYNC:使每次write等待物理I/O操作完成,但是如果写操作并不影响读取刚写入的数据,则不等待文件属性被更新。

O_RSYNC:使每一个以文件描述符为参数的read操作等待,直至任何对文件同一部分进行的未决写操作都完成。

O_SYNC:使每次write都等到物理I/O操作完成,包括由write操作引起的文件属性更新所需的I/O

mode的取值:S_IRUSR , S_IWUSR , S_IXUSR , S_IRWXU , S_IRGRP , S_IWGRP , S_IXGRP , S_IRWXG , S_IROTH , S_IWOTH , S_IXOTH , S_IRWXO

2. int creat(const char *pathname,mode_t mode);

头文件:#include<fcntl.h>

功能:创建一个文件

返回值:若成功则返回文件描述符,若出错则返回-1

3. int close(int filedes);

头文件:#include<unistd.h>

功能:关闭一个打开的文件

返回值:若成功则返回0,否则返回-1

4. off_t lseek(int filedes,off_t offset,int whence);

头文件:#include<unistd.h>

功能:为一个打开的文件设置其偏移量。

返回值:若成功则返回新的文件偏移量。出错则返回-1

whence取值:SEEK_SET , SEEK_CUR , SEEK_END

5. ssize_t read(int filedes,void *buf,size_t nbyes);

头文件:#include<unistd.h>

功能:从打开的文件中读取数据

返回值:若成功则返回读到的数据,若已到文件尾则返回0,若出错则返回-1

6. ssize_t write(int filedes,const void 8buf,size_t nbytes);

头文件:#include<unistd.h>

功能:向打开的文件写数据

返回值:若成功则返回已写的字节数,出错则返回-1

7. dup 和 dup2函数

功能:用于复制一个现存的文件描述符

int dup(int filedes);

int dup2(int filedes,int filedes2);

头文件:#include<unistd.h>

返回值:若成功则返回新的文件描述符,若出错则返回-1

filedes 指定新描述符的数值,如果filedes 已经打开,则先将其关闭。若filedes等于filedes2,则dup2返回filedes2,而不关闭它

8.sync , fsync  和fdatasync函数

功能:保证磁盘上实际文件系统与缓冲区高速缓存中内容的一致性

int fsync(int filedes);

int fdatasync(int filedes);

void sync(void);

返回值:若成功则返回0,若出错则返回-1

sync 函数:将所有修改过的块缓冲区排入写队列,然后返回,并不等待实际写磁盘操作完成。

fsync函数:对由文件描述符filedes指定的单一文件起作用,并且等待写磁盘操作结束(用于数据库)

fdatasync函数:类似fsync,但只影响文件的数据部分,除数据外,fsync还同步更新文件属性


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值