APUE 第三章总结

内容概括

这一章描述的是文件I/O函数,从文件描述符开始讲起,然后介绍了一些文件io函数,然后就是介绍了文件共享的基本原理,然后介绍了控制文件描述符的一些函数,dup,dup2,fcntl等等
最后介绍了iocntl函数。。。

重点内容

本章的最重要的内容我觉得应该是文件描述符和文件共享方式了,以及不带缓冲io的概念
还有一些重要的文件描述符标志

文件描述符:

对于内核来说所有打开文件都通过文件描述符来引用,对文件的操作都可以转换为对文件描述符的操作

文件共享方式:

内核使用3中数据结构表示打开文件
1 每个进程在进程表中都有一个记录项,记录项中包括了一个文件描述符表,每个描述符占用一项文件描述符有两个成员
a.文件描述符标志即close_on_exec,此标志用来在exec另一个程序时,是否关闭文件描述符
b 一个指向文件表项的指针
2 内核为所有打开的文件维持一张文件表,每个文件表项包括:
a.文件状态标志(注意区别文件描述符标志)
b.当前文件偏移量
c.指向该文件v节点表项的指针(linux中没有v节点)
3 每一个打开文件都有一个V节点结构,描述了文件信息等等

注意:
文件表项在不同进程之间不是共享的,即每一个进程有自己的文件表项,这就造成一个文件的可能有多个文件偏移量,v节点是共享的
多个文件描述符可以指向同一个文件表项,例如dup,dup2函数,fork之后也发生同样的情况,此时父进程,子进程可以共享同一个文件表项,这也是进程间通信的基础之一
当同一个进程没有共享同一个文件表项时,而对同一个文件进行访问时,需要注意同步
文件描述符标志和文件状态标志的作用范围区别,前者只用于一个进程的一个描述符,而后者则应用于所有进程,只要该进程的文件描述符指向该文件表项

不带缓冲IO

https://www.cnblogs.com/cavehubiao/p/3981482.html
不带缓冲IO并不是指没有缓冲区,而是指,在用户态不设置缓冲区,直接调用system call
系统调用在内核中有缓冲区
数据走向 用户程序->内核缓冲区->磁盘

其他内容

剩下的都是一些要记的API了,用的时候查书或者看手册吧
open
openat
create
close
lseek
read
write
fcntl

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值