Linux c获取任意路径的硬盘使用情况
没有什么好说的,其实就是获取硬盘的statfs信息结构
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <sys/statfs.h>
#include <sys/vfs.h>
#include <string.h>
#include <errno.h> #define DEFAULT_DISK_PATH "/home" typedef struct statfs DISK,*pDISK; //获取包含磁盘空间信息的结构体
//参数二:要获取磁盘信息的位置
//返回值:成功返回1,失败返回0
int getDiskInfo(pDISK diskInfo,const char *path)
{
char dpath[]=DEFAULT_DISK_PATH;//设置默认位置
int flag=; if(NULL!=path)
{
strcpy(dpath,path);
} if(-==(flag=statfs(dpath,diskInfo)))//获取包含磁盘空间信息的结构体
{
perror("getDiskInfo statfs fail");
return ;
} return ;
} //计算磁盘总空间,非超级用户可用空间,磁盘所有剩余空间,计算结果以字符串的形式存储到三个字符串里面,单位为MB
int calDiskInfo(char *diskTotal,char *diskAvail,char *diskFree,pDISK diskInfo)
{
unsigned long long total=,avail=,free=,blockSize=;
int flag=; if(!diskTotal&&diskAvail&&diskFree&&diskInfo)
{
printf("\ncalDiskInfo param null!\n");
return ;
}
blockSize=diskInfo->f_bsize;//每块包含字节大小
total=diskInfo->f_blocks*blockSize;//磁盘总空间
avail=diskInfo->f_bavail*blockSize;//非超级用户可用空间
free=diskInfo->f_bfree*blockSize;//磁盘所有剩余空间 //字符串转换
flag=sprintf(diskTotal,"%llu",total>>);
flag=sprintf(diskAvail,"%llu",avail>>);
flag=sprintf(diskFree,"%llu",free>>); if(-==flag)
{
return ;
}
return ; } int main()
{
DISK diskInfo;
char str1[],str2[],str3[]; memset(&diskInfo,,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 ;
}
运行结果如下,结果单位为MB

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

可见,结果是差不多的。
Linux c获取任意路径的硬盘使用情况的更多相关文章
- C/C++获取Linux系统CPU和内存及硬盘使用情况
需求分析: 不使用Top df free 等命令,利用C/C++获取Linux系统CPU和内存及硬盘使用情况 实现: //通过获取/proc/stat (CPU)和/proc/meminfo(内存 ...
- linux查看系统CPU,内存,硬盘使用情况
top查看CPU,内存使用情况 free查看硬盘使用情况
- linux查看 cpu及内存和硬盘使用情况的命令top
使用时输入 top,退出时输入q http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316399.html 简介 top命令是Linux下常用的 ...
- Java获取当前内存及硬盘使用情况
import java.io.File; import java.lang.management.ManagementFactory; import com.sun.management.Operat ...
- Linux下获取硬盘使用情况
Linux下获取硬盘使用情况[总结] 1.前言 在嵌入式设备中,硬盘空间非常有限,在涉及到经常写日志的进程时候,需要考虑日志的大小和删除,不然很快就硬盘写满,导致日志程序崩溃.为了捕获硬盘写满的异常场 ...
- linux C++ 获取文件绝对路径
提供ftp服务时需要获取文件绝对路径,这里记录一下. #include <stdlib.h> #include <stdio.h> #include <limits.h& ...
- Linux下multipath多路径配置
一.什么是多路径 普通的电脑主机都是一个硬盘挂接到一个总线上,这里是一对一的关系.而到了有光纤组成的SAN环境,或者由iSCSI组成的IPSAN环境,由于主机和存 储通过了光纤交换机或者多块网卡及IP ...
- Java获取各种路径
(1).request.getRealPath("/");//不推荐使用获取工程的根路径(2).request.getRealPath(request.getRequestURI( ...
- java File linux windows 下 绝对路径 相对路径问题
前言 当前项目目录 windows 为 E:\project\testpro\ linux 为 /project/testpro/ Windows环境下获取绝对路径情况 使用 a/b/c 为路径, ...
随机推荐
- 浅析贝叶斯神经网络(Based on Variational Bayesian)
https://blog.csdn.net/qq_20195745/article/details/82453589 贝叶斯神经网络简介 对于一个神经网络来说,最为核心的是如何根据训练集的数据,得到各 ...
- PID算法(c 语言)(转)
PID算法(c 语言)(来自老外) #include <stdio.h> #include<math.h> //定义PID 的结构体 struct _pid { int pv; ...
- 基础JAVA程序设计 (多个类方法的实现)
模拟实现家庭购买电视.要求: (1) 电视类(TV)属性: channel : int , 1 代表CCTV-1,2代表CCTV-2-- 方法: 设置频道setChannel(int i) , 获取 ...
- [Python数据挖掘]第2章、Python数据分析简介
<Python数据分析与挖掘实战>的数据和代码,可从“泰迪杯”竞赛网站(http://www.tipdm.org/tj/661.jhtml)下载获得 1.Python数据结构 2.Nump ...
- phtyon
https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014316399410395 ...
- Excel导出采用mvc的ExcelResult继承遇到的问题Npoi导出
#region 构建Excel文档 //创建Excel文件的对象 NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSS ...
- Java基础实训2
1. 一维数组的创建和遍历. 声明并创建存放4个人考试成绩的一维数组,并使用for循环遍历数组并打印分数.要求: (1) 首先按“顺序”遍历,即打印顺序为:从第一个人到第四个人: (2) ...
- vue3.0使用axios报错问题记录
vue-cli3.0使用axios的时候出现错误,记录一下 报错信息: Uncaught TypeError: Cannot set property $axios of #<Vue> w ...
- 编译openwrt时报错:g++: internal compiler error: Killed (program cc1plus)
答: 这是内存不足导致的,增大内存或者减少运行的线程即可
- 论文笔记:Fast Neural Architecture Search of Compact Semantic Segmentation Models via Auxiliary Cells
Fast Neural Architecture Search of Compact Semantic Segmentation Models via Auxiliary Cells 2019-04- ...