如果你用这个运行dd:
dd if=/dev/zero of=sparsefile bs=1 count=0 seek=1048576
您似乎获得了一个完全未分配的稀疏文件(这是ext4)
smark@we:/sp$ls -ls sparsefile
0 -rw-rw-r-- 1 smark smark 1048576 Nov 24 16:19 sparsefile
fibmap同意:
smark@we:/sp$sudo hdparm --fibmap sparsefile
sparsefile:
filesystem blocksize 4096,begins at LBA 2048; assuming 512 byte sectors.
byte_offset begin_LBA end_LBA sectors
无需深入了解dd的来源,我正试图弄清楚如何在C中做到这一点.
我试过fseeking和写零字节,但它没有做任何事情.
不知道还有什么可以尝试,我想在我追捕dd的内脏之前有人可能知道.
编辑:包括我的例子……
FILE *f = fopen("/sp/sparse2","wb");
fseek(f,1048576,SEEK_CUR);
fwrite("x",1,f);
fclose(f);