对应的头文件:#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