文件空洞
lseek文件偏移量超过文件尾部,下次写的时候就会新分配一块磁盘块,没有写过的字节都为0. 但是尾部和偏移位置间的不会新分配。
打开文件的内核数据结构
关于O_APPEND标志对于保持文件写操作的原子性:
当两个进程同时写一个文件的时候,操作A 首先用lseek将文件偏移量定位到当前文件末端1500处,内核切换B进程也先定位到文件末端,在文件末端写了100字符,再切换回去,此时A再写,就会造成A覆盖B的内容。而O_APPEND就致力于解决这个问题
lseek文件偏移量超过文件尾部,下次写的时候就会新分配一块磁盘块,没有写过的字节都为0. 但是尾部和偏移位置间的不会新分配。
当两个进程同时写一个文件的时候,操作A 首先用lseek将文件偏移量定位到当前文件末端1500处,内核切换B进程也先定位到文件末端,在文件末端写了100字符,再切换回去,此时A再写,就会造成A覆盖B的内容。而O_APPEND就致力于解决这个问题