#include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #ifnndef WIN32 #include <sys/statfs.h> #include <sys/vfs.h> #endif #define DEFAULT_DISK_PATH "/work" typedef struct statfs DISK,*pDISK; //获取包含磁盘空间信息的结构体 bool getDiskInfo(pDISK diskInfo, const char *path) { char dpath[100]=DEFAULT_DISK_PATH; int flag=0; if(NULL!=path) { strcpy(dpath,path); } if(-1==(flag=statfs(dpath,diskInfo)))//获取包含磁盘空间信息的结构体 { return false; } return true; } //计算磁盘总空间,磁盘可用空间,计算结果的单位为Byte int calDiskInfo(unsigned long long &diskTotal, unsigned long long &diskAvail) {
DISK disk;
memset(&disk,0,sizeof(DISK));
getDiskInfo(&disk,DISK_PATH);
pDISK diskInfo = &disk;
unsigned long long blockSize=diskInfo->f_bsize;//每块包含字节大小
diskTotal=diskInfo->f_blocks*blockSize;//磁盘总空间
diskAvail=diskInfo->f_bavail*blockSize;//磁盘可用空间 }