#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#ifndef 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;//磁盘可用空间
}