lseek定位至文件尾后时,读写操作的行为探究
关于lseek偏移至文件末尾后读写行为的问题解答
问题I:从文件末尾之后的位置读取数据时,会发生什么?
当调用read()从文件末尾之后的位置读取数据时,会直接返回0,和读取到文件正常末尾的表现完全一致——因为文件实际不存在这些超出末尾的字节,不会读取到任何有效内容。
问题II:向文件末尾之后的位置写入数据时,会发生什么?
往这个位置写入数据时,系统会先把文件末尾到当前偏移量之间的空隙字节填充为0(也就是文件空洞),再写入你提供的数据。此时文件的大小会更新为当前偏移量加上写入数据的长度。需要注意的是,这些空洞部分默认不会占用实际磁盘空间,只有后续对空洞区域进行写操作时,才会为其分配磁盘块。
内容的提问来源于stack exchange,提问作者Indrojit Mondal
相关产品推荐
相关产品推荐

