1 命令
根据参考资料[4]的说明,可以使用df命令查看系统的磁盘空间。
2 函数
参考资料[3]介绍了用于获取磁盘容量信息的函数statfs(),并且提供了一个简单的例程。由于参考资料[3]的例程中,单位转换时使用右移代替除法,从而导致结果不准。这里我将其进行修改,结果如下所示:
#include <sys/statfs.h>
#include <stdio.h>
#include <stdint.h>
#define KB 1024.0 // 2^10
#define MB 1048576.0 // 2^20
#define GB 1073741824.0 // 2^30
int main(void)
{
struct statfs diskInfo;
statfs("/home/liyihai/", &diskInfo);
uint64_t blocksize = diskInfo.f_bsize; // 每个block里包含的字节数
uint64_t totalsize = blocksize * diskInfo.f_blocks; // 总的字节数,f_blocks为block的数目
printf("Total_size = %lld B = %f KB = %f MB = %f GB\n",
totalsize,
totalsize / KB,
totalsize / MB,
totalsize / GB);
uint64_t freeDisk = diskInfo.f_bfree * blocksize; // 剩余空间的大小
uint64_t availableDisk = diskInfo.f_bavail * blocksize; // 可用空间大小
printf("Disk_free = %f MB = %f GB\n"
"Disk_available = %f MB = %f GB\n",
freeDisk / MB,
freeDisk / GB,
availableDisk / MB,
availableDisk / GB);
return 0;
}
参考资料