博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux c获取任意路径的硬盘使用情况
阅读量:7217 次
发布时间:2019-06-29

本文共 1612 字,大约阅读时间需要 5 分钟。

没有什么好说的,其实就是获取硬盘的statfs信息结构

代码如下:

#include 
#include
#include
#include
#include
#include
#define DEFAULT_DISK_PATH "/home"typedef struct statfs DISK,*pDISK;//获取包含磁盘空间信息的结构体//参数二:要获取磁盘信息的位置//返回值:成功返回1,失败返回0int 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)))//获取包含磁盘空间信息的结构体 { perror("getDiskInfo statfs fail"); return 0; } return 1;}//计算磁盘总空间,非超级用户可用空间,磁盘所有剩余空间,计算结果以字符串的形式存储到三个字符串里面,单位为MBint calDiskInfo(char *diskTotal,char *diskAvail,char *diskFree,pDISK diskInfo){ unsigned long long total=0,avail=0,free=0,blockSize=0; int flag=0; if(!diskTotal&&diskAvail&&diskFree&&diskInfo) { printf("\ncalDiskInfo param null!\n"); return 0; } blockSize=diskInfo->f_bsize;//每块包含字节大小 total=diskInfo->f_blocks*blockSize;//磁盘总空间 avail=diskInfo->f_bavail*blockSize;//非超级用户可用空间 free=diskInfo->f_bfree*blockSize;//磁盘所有剩余空间 //字符串转换 flag=sprintf(diskTotal,"%llu",total>>20); flag=sprintf(diskAvail,"%llu",avail>>20); flag=sprintf(diskFree,"%llu",free>>20); if(-1==flag) { return 0; } return 1;}int main(){ DISK diskInfo; char str1[30],str2[30],str3[30]; memset(&diskInfo,0,sizeof(DISK)); getDiskInfo(&diskInfo,DEFAULT_DISK_PATH);//获取磁盘信息结构体 calDiskInfo(str1,str2,str3,&diskInfo);//计算磁盘信息结构体 printf("\ntotal:%s avail:%s free%s\n",str1,str2,str3); printf("Hello world!\n"); return 0;}

运行结果如下,结果单位为MB

 使用df命令获取的磁盘信息

可见,结果是差不多的。

转自:https://www.cnblogs.com/thegodofthunder/p/7234803.html

你可能感兴趣的文章
fedroa 编译安装mysql5.5
查看>>
WC2018游记
查看>>
毕设开发日志2017-10-23
查看>>
***微信公众平台开发: 获取用户基本信息+OAuth2.0网页授权
查看>>
第二章 例题2-2 在屏幕上显示两个短句
查看>>
【转】iOS学习之适配iOS10
查看>>
OC语言BLOCK和协议
查看>>
C++创建一个动态链接库工程
查看>>
(六)maven之本地仓库
查看>>
如何使用 SPICE client (virt-viewer) 来连接远程虚拟机桌面?
查看>>
CentOS7
查看>>
linux高编IO-------tmpnam和tmpfile临时文件
查看>>
微信的机器人开发
查看>>
从零开始学Java(二)基础概念——什么是"面向对象编程"?
查看>>
近期面试总结(2016.10)
查看>>
CodeForces 525D Arthur and Walls :只包含点和星的矩阵,需要将部分星变成点使满足点组成矩形 : dfs+思维...
查看>>
积累_前辈的推荐
查看>>
strcpy和memcpy的区别《转载》
查看>>
在windows平台下electron-builder实现前端程序的打包与自动更新
查看>>
DroidPilot V2.1 手写功能特别版
查看>>