Unix高级编程之文件IO

文件io---低级io

特点:
不带缓存io
优点:
实时性高

1.io基本操作
文件描述符:文件io打开文件的标识
非负整型数,是内核为打开文件维护结构的数组下标
默认最多能打开1024文件

stdin-----0
stdout-----1
stderr-----2
函数:
open(2);
read(2);
write(2);
lseek(2);
<1>允许偏移的字节个数大于文件本身
<2>lseek()本身不进行读写操作
空洞文件
空洞文件本身不占用磁盘空间

close(2);

写一段代码,验证一个进程最多能打开多少个文件?
1021

2.文件的共享
dup(2);
dup2(2);

3.i/o效率
不带缓存,用户所指定的缓存区的大小就会影响io效率
并不是缓存区越大效率越高
推荐4096

4.原子操作
操作不能被分割(打断)
tmpfile();---->原子
tmpname()+creat();---->不原子

dup2();---->原子
close()+dup()---->不原子

5.刷新内核缓存
sync(2);//刷新缓存区到内核io队列,不阻塞
fsync(2);//阻塞,直到文件的数据和inode信息全部刷新在磁盘空间才会返回
fdatasync(2);//阻塞,只是文件的数据刷新在磁盘空间才会返回

6.fcntl(2);
<1>复制文件描述符
<2>改变文件描述符标识
<3>改变文件状态标识
<4>文件锁
<5>记录锁
ioctl();

 

转载于:https://www.cnblogs.com/axjlxy/p/5859932.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值