加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C – Linux稀疏文件:如何检查文件是否稀疏并打印0填充的磁盘块

发布时间:2020-12-16 09:50:14 所属栏目:百科 来源:网络整理
导读:我想要做的是在 linux上编写一个C程序,如果有稀疏文件,应该在当前目录中检查,并且我还要打印已经代表文件中的间隙和数量的磁盘块数量磁盘块是0填充但占用磁盘空间. 到目前为止,我可以访问当前目录并打印文件 DIR *dirp;struct dirent *dp; 为了完成第二部分
我想要做的是在 linux上编写一个C程序,如果有稀疏文件,应该在当前目录中检查,并且我还要打印已经代表文件中的间隙和数量的磁盘块数量磁盘块是0填充但占用磁盘空间.

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

DIR *dirp;
struct dirent *dp;

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

那么,有人能告诉我如何使用稀疏文件做这个部分吗?

解决方法

如果要在稀疏文件中查找漏洞,请参阅lseek的联机帮助页,特别是有关SEEK_HOLE和SEEK_DATA的信息.

如果你只想知道磁盘上分配的大小,那么请查看stat(2)的manpage:

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的下一个倍数并减去文件大小,那就是孔的大小.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读