zoukankan      html  css  js  c++  java
  • linux C代码获取磁盘大小

    [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 ", 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 ", 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 ", mbTotalsize, mbFreedisk);  


    执行输出如下:

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

  • 相关阅读:
    France '98
    【笔记】《通俗详细地讲解什么是P和NP问题》的概念记录
    130831组队赛-Regionals 2011, Asia
    Android 解屏幕锁与点亮屏幕
    Android 点亮屏幕
    利用FFT 计算生成离散解析信号
    hdu5246 超级赛亚ACMer
    用srvctl命令配置service
    MySQL优化之——权限管理
    JS 点击复制Copy插件--Zero Clipboard
  • 原文地址:https://www.cnblogs.com/poonpan/p/8628704.html
Copyright © 2011-2022 走看看