获取磁盘信息函数statvfs()

对应的头文件:#include <sys/statvfs.h>

  struct statvfs {
  unsigned long  f_bsize;    /*文件系统块大小*/
  unsigned long  f_frsize;   /*碎片大小*/
  fsblkcnt_t     f_blocks;   /*fs的大小(以f_frsize为单位)*/
  fsblkcnt_t     f_bfree;    /*可用块数*/
  fsblkcnt_t     f_bavail;   /*非根的可用块数*/
  fsfilcnt_t     f_files;    /*#索引节点*/
  fsfilcnt_t     f_ffree;    /*#空闲索引节点*/
  fsfilcnt_t     f_favail;   /*非根目录的空闲索引节点数*/
  unsigned long  f_fsid;     /*文件系统ID*/
  unsigned long  f_flag;     /*装载标志*/
  unsigned long  f_namemax;  /*最大文件名长度*/
};
更多请阅读:https://www.yiibai.com/unix_system_calls/fstatvfs.html
  • 总容量 = f_bsize * f_blocks;
  • 剩余空间 = f_bfree * f_blocks;
  • 可用空间 = f_bavail * f_blocks

1)分析f_bsize和f_frsize的异同
表示每块包含字节的多少
打印结果都是4096字节,显然都是一样的

2)分析f_bfree和f_bavail:表示磁盘剩余空闲的容量

打印结果是
磁盘为16G的情况下,f_bfree比f_bavail大809MB
磁盘为1.5T的情况下,f_bfree比f_bavail大2585MB

f_bavail更加接近显示的值

3)f_blocks表示磁盘的整体空间

4)计算磁盘各个方面的数值如下:

  • 磁盘的整体空间:(buf.f_blocks * buf.f_frsize)/1024/1024)MB
  • 磁盘的空闲空间:(buf.f_bfree * buf.f_frsize)/1024/1024)MB
  • 磁盘的用户级空闲空间:(buf.f_bavail * buf.f_frsize)/1024/1024)MB
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值