首页 > 技术文章 > linux C代码获取磁盘大小

poonpan 2018-03-23 10:17 原文

[root@localhost ~]# df -h

文件系统              容量  已用 可用 已用% 挂载点
/dev/mapper/VolGroup00-LogVol00
                       14G   11G  2.5G  81% /
/dev/sda1          99M   21M   73M  23% /boot
tmpfs                 252M     0  252M   0% /dev/shm

 

 

如下为C代码的实现

#include <sys/vfs.h>

 

[cpp] view plain copy
 
  1. struct statfs diskInfo;  
  2. statfs("/", &diskInfo);  
  3. unsigned long long totalBlocks = diskInfo.f_bsize;  
  4. unsigned long long totalSize = totalBlocks * diskInfo.f_blocks;  
  5. size_t mbTotalsize = totalSize>>20;  
  6. unsigned long long freeDisk = diskInfo.f_bfree*totalBlocks;  
  7. size_t mbFreedisk = freeDisk>>20;  
  8. printf ("/  total=%dMB, free=%dMB\n", mbTotalsize, mbFreedisk);  
  9.   
  10. statfs("/boot", &diskInfo);  
  11. totalBlocks = diskInfo.f_bsize;  
  12. totalSize = totalBlocks * diskInfo.f_blocks;  
  13. mbTotalsize = totalSize>>20;  
  14. freeDisk = diskInfo.f_bfree*totalBlocks;  
  15. mbFreedisk = freeDisk>>20;  
  16. printf ("/boot  total=%dMB, free=%dMB\n", mbTotalsize, mbFreedisk);  
  17.   
  18. statfs("/dev/shm", &diskInfo);  
  19. totalBlocks = diskInfo.f_bsize;  
  20. totalSize = totalBlocks * diskInfo.f_blocks;  
  21. mbTotalsize = totalSize>>20;  
  22. freeDisk = diskInfo.f_bfree*totalBlocks;  
  23. mbFreedisk = freeDisk>>20;  
  24. printf ("/dev/shm  total=%dMB, free=%dMB\n", mbTotalsize, mbFreedisk);  


执行输出如下:

/                   total=13763MB, free=3246MB
/boot           total=98MB,        free=78MB
/dev/shm   total=251MB,      free=251MB

 

推荐阅读