如果程序的文件偏移量已然跨越了文件结尾,然后再执行IO操作,将会发生什么情况? read调用将会返回0,表示文件结尾.令人惊讶的是,write函数可以在文件结尾后的任意位置写入数据. 从文件结尾后到新写入数据的这段空间被称为文件空洞. 从编程的角度来看,文件空洞是存在字节的,读取空洞将返回以0(空字节)填充的缓冲区. 然而,文件空洞不占用任何磁盘空间.知道后续某个时间点,在文件空洞中写入了数据,文件系统才会为之分配磁盘块. 文件空洞的优势在于,与为实际需要的空字节分配磁盘块相比,稀疏的填充文件会…