【发布时间】:2021-04-10 07:23:05
【问题描述】:
来自手册页:
lseek() 允许将文件偏移设置到文件末尾之外(但这不会改变文件的大小)。如果数据稍后写入 此时,后续读取间隙(“洞”)中的数据会返回空字节('\0'),直到数据实际写入间隙。
我们在gap中读取了空字节,但是如果文件本身的数据是'\0'呢?如何区分空字节是gap还是文件中的'\0'数据?
【问题讨论】:
-
看数据是看不出来的。而是跟踪您自己添加到文件中的任何漏洞。在调用
lseek之前获取当前文件大小,并使用它来跟踪将由lseek创建的任何孔的位置和大小。 -
@kaylum 我们处理一些不是自己创建的洞文件的场景,比如复制洞文件而不将洞数据复制到新文件。