APUE笔记
记录学习APUE过程中的点点滴滴
第一章
不带缓冲的I/O
函数open、read、write、lseek以及close提供了不带缓冲的I/O。这些函数都使用文件描述符
stdin, STDIN_FILENO区别
简单说,stdin, stdout
数据类型为FILE *
,STDIN_FILENO, STDOUT_FILENO
数据类型为int
。更多内容见这篇文章
第二章
文件偏移量可以大于文件的当前长度
如果使用lseek( fd, offset, SEEK_END)
其中offset是一个正数,就会跳到文件末尾之后offset偏移量的位置开始读写,这是允许的。在这种情况下,对该文件的下一次写将加长该文件,并在文件中构成一个空洞
文件中的空洞并不要求在磁盘上占用存储区,具体处理方式与文件系统的实现有关,当定位到超出文件尾端之后写时,对于新写的数据需要分配磁盘块,但是对于原文件尾端和新开始写位置之间的部分则不需要分配磁盘块