Unix - 文件里构成一个空洞的分析

Posted wzjhoutai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unix - 文件里构成一个空洞的分析相关的知识,希望对你有一定的参考价值。

        lseek函数显示地为一个打开文件设置偏移量,文件偏移量能够大于文件的当前长度,在这样的情况下。对该文件的下一次写将加长该文件。并在文件里构成一个空洞,这一点是同意的。

位于文件里但没有写过的字节都被读为0。

eg:

技术分享

holeFile.c函数创建了一个具有空洞的文件,执行观察:

技术分享

能够看到,文件里的30个未写入字节都被设置读为0。每一行開始的一个7位数是以八进制形式表示的字节偏移量。

将刚创建的文件与相同长度但舞空洞的文件进行比較

技术分享


技术分享

尽管两个文件的长度同样,但无空洞文件占用了20个磁盘块,而具有空洞的文件仅仅占用了8个磁盘块。






以上是关于Unix - 文件里构成一个空洞的分析的主要内容,如果未能解决你的问题,请参考以下文章

Linux文件空洞与稀疏文件

Unix系统编程()文件空洞

UNIX环境高级编程APUE练习4.6-实现类似cp的程序,保留文件中的空洞

Day877.数据空洞 -MySQL实战

存储 - 空洞文件

Mongo实战之数据空洞的最佳实践