1、函数原型
int statfs(const charpath, struct statfsbuf);
参数:
path: 位于需要查询信息的文件系统的文件路径
buf: statfs结构体类型的指针变量,用于存储文件系统的相关信息
头文件:
<sys/statfs.h>
2、statfs结构体:
struct statfs{
long f_type; //文件系统的类型
long f_bsize; //经优化后的传输块的大小
long f_blocks; //文件系统数据块总数
long f_bfree; //可用块数
long f_bavail; //普通用户能够获得的块数
long f_files; //文件结点总数
long f_ffree; //可用文件结点数
fisd_t f_fsid; //文件系统标识
long f_namelen; //文件名的最大长度
}
3、使用例子
void ZDiskCapacityStatusBar::GetDiskSpace(double &dFree_MB,double &dUsed_MB,double &dTotal_MB,double &percent)
{
struct statfs stInfo;
statfs("/mnt/store",&stInfo);
long long total = stInfo.f_blocks*stInfo.f_bsize;//数据块总数*数据块大小
long long avail = stInfo.f_bavail*stInfo.f_bsize;//普通用户可用块数*数据块大小
long long free = stInfo.f_bfree*stInfo.f_bsize;//root用户可用块数*数据块大小,机器是root用户
long long used = total - free;
percent = (float)(free) / float(total);//可用率
dFree_MB = free/1024/1024;
dUsed_MB = used/1024/1024;
dTotal_MB = total/1024/1024;
}