《Linux系统编程》----读书笔记(4)
时间:2009-06-21 来源:garyneville
- 带空洞的文件叫做sparse file,稀疏文件可以节省可观的空间并提升效率,因为操作那些空洞并不引发任何物理I/O。
- pread和pwrite最重要的作用是可以避免在使用lseek时可能出现的潜在竞争。由于线程共享文件描述符,可能在一个线程调用lseek之后,但尚未进行读写操作之前,另一个线程修改文件位置,这时就可以使用pread和pwrite。
- I/O多路复用的设计遵循以下原则1)I/O多路复用:当任何文件描述符准备好I/O时通知我2)在一个或更多文件描述符就绪前始终处于睡眠状态。3)唤醒:哪个准备好了?4)在不阻塞的情况下处理所有IO就绪的fd。5)返回第一步,重新开始。
- Linux提供了三种I/O多路复用方案:select,poll和epoll。
- Linux和所有的复合可移植性的操作系统,以相同的方式对待文本和二进制文件。
- fgetc,fgets,fread,fputc,fputs,fwrite。
- fflush只是将数据从用户缓冲区写入到内核缓冲区,要真正写到磁盘,需要使用fsync。
- 标准I/O的函数本质上是线程安全的。
- 函数flockfile()会等待流被解锁,然后获得锁,增加锁计数,成为流的所有者线程,然后返回。
相关阅读 更多 +