gpt4 book ai didi

C - Linux 稀疏文件 : How to check if file is sparse and print 0-filled disk blocks

转载 作者:IT王子 更新时间:2023-10-29 01:06:35 25 4
gpt4 key购买 nike

我想做的是在 linux 上写一个 C 程序,如果有稀疏文件,它应该检查当前目录,而且我想打印已经代表文件中的间隙的磁盘 block 数以及0填充但占用磁盘空间的磁盘 block 数。

到目前为止,我可以访问当前目录并只打印文件

DIR *dirp;
struct dirent *dp;

为了使用稀疏文件完成第二部分,我尝试使用 stat() 但它似乎不起作用,因为我没有得到我希望的所需结果。

那么,谁能告诉我如何使用稀疏文件完成这部分工作?

最佳答案

如果您想在稀疏文件中查找漏洞,请参阅 lseek 的联机帮助页,特别是有关 SEEK_HOLESEEK_DATA 的部分。

如果您只想知道磁盘上分配的大小,请查看 stat (2) 的联机帮助页:

       struct stat {
...
off_t st_size; /* total size, in bytes */
...
blksize_t st_blksize; /* blocksize for file system I/O */
blkcnt_t st_blocks; /* number of 512B blocks allocated */
};

st_size 告诉您总大小(以字节为单位),st_blksize * st_blocks 告诉您分配的大小。如果将 st_size 舍入为 st_blksize 的下一个倍数并减去文件大小,即为孔的大小。

关于C - Linux 稀疏文件 : How to check if file is sparse and print 0-filled disk blocks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21499451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com