关于文件和磁盘的大小计算

hzy694358 2010-09-06 02:21:08
文件——与du命令结果一样
struct stat statbuf;
lstat(path,&statbuf);
(statbuf.st_blocks)*512/1024;//KB为单位

磁盘——与df命令结果不同
struct mntent *ent;
struct statfs fs;
FILE *fp = setmntent(_PATH_MOUNTED,"r");
ent = getmntent(fp);
cout<<ent->mnt_fsname<<endl;//ent->mnt_fsname为:/dev/sda5
statfs(ent->mnt_fsname,&fs);
endmntent(fp);
cout<<"磁盘:"<<****<<endl;
这边的****为:
fs.f_blocks
fs.f_blocks*512/1024
fs.f_blocks/1024*fs.f_bsize/1024

真不知道要怎么算了,那个fs.f_blocks到底是什么鸟东西,和st_blocks不一样的吗
怎么算磁盘的空间呢?
...全文
85 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hzy694358 2010-09-27
  • 打赏
  • 举报
回复
终于等到人来了,
可以拿回20分了,呵呵
wind_199 2010-09-26
  • 打赏
  • 举报
回复
楼主的精神值得学习 不会的一定要找到答案
steptodream 2010-09-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hzy694358 的回复:]
原来如此:
uint64_t totalBlocks = diskStatfs.f_blocks;
uint64_t totalSize = totalBlocks * diskStatfs.f_bsize;//磁盘总额byte


看来linux板块确实很冷清
[/Quote]
楼主的精神值得学习 不会的一定要找到答案
哎 我不会开发 就会使用点linux 这样的细节我基本都没有去详细了解过。
hzy694358 2010-09-26
  • 打赏
  • 举报
回复

原来如此:
uint64_t totalBlocks = diskStatfs.f_blocks;
uint64_t totalSize = totalBlocks * diskStatfs.f_bsize;//磁盘总额byte


看来linux板块确实很冷清
hzy694358 2010-09-06
  • 打赏
  • 举报
回复
怎么一个人没有
linux开发怎么这么冷清……

23,223

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧