操作系统学习笔记(二)文件I/O

文件系统与标准I/O库

一、文件系统

1、 open   

头文件 <fcntl.h>  成功返回文件描述符fd,失败返回-1

原型: int open(const char * path ,int oflag);   或   int open(const char * path ,int oflag, mode_t mode); 

其中在C中,两种open不是重载关系(二是三的一种可选情况),第三个参数mode_t只在某些情况下可用。

其中Path是路径,oflag指示文件打开选项包括必选和可选(必选为O_RDONLY,O_WRONLY,O_RDWR),mode只有创建文件时候才需要,用于指定创建文件的权限位(收到umask影响)flag可选部分如下:

O_APPEND  //追加到文件尾写    O_ASYNC //异步 IO 

O_CLOEXEC  //在打开文件时将文件描述符设置为FD_CLOEXEC。用于解决多线程fork与用fcntl设置FD_CLOEXEC竞争问题。

O_CREAT //文件不存在时创建该文件。使用此选项使要给出第三个参数Mode的值

O_DIRECT  //对文件直接IO         O_DIRECTORY   //要求打开路径必须是目录

O_EXEL //用于确保是此次调用创建的文件,可以和O_CREAT一起用来测试文件是否存在,不存在则出错。和O_CREAT一起构成原子操作。

O_NONBLOCK、O_NDELAY   //将该文件描述符设置为非阻塞的

O_SYNC  //设置为I/O同步模式,每次写操作都会将数据同步到磁盘

O_TRUNC    //在打开文件时候将文件长度阶段为0,需要和O_RDWR或O_WRONLY一起使用。

 

2、creat

头文件 <fcntl.h>  成功返回文件描述符fd,失败返回-1

原型:int creat(const char *path,mode_t mode);   //以只写打开,相当于open(path,O_WRONLY|O_CREAT|O_TRUNC,mode);

 

3、close    //用close关闭文件描述符fd适用于普通文件、设备、socket

头文件 <unistd.h> 

原型:  int close(fd);   //成功返回0,失败返回 -1

注意:文件close时会释放进程加在文件上的锁。进程终止时,内核自动关闭所有它打开的文件

不close对于常驻进程将会不断申请新的文件描述符甚至扩展文件表。并申请新的空闲表结构

 

4、lseek文件偏移(读写从当前偏移开始,读写后更改偏移)打开文件默认偏移量为0,指定O_APPEND选项则不为0

头文件 <unistd.h> 

原型:  off_t lseek(int fd,off_t

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值