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 为路径, ...
随机推荐
- 其他shell
dash shell Debian的dash shell的历史很有趣.它是ash shell的直系后代,而ash shell则是Unix系统上原来 的Bourne shell的简化版本(参见第1章). ...
- Android系统修改之Notification布局修改(一)
源码基于Android4.4 相关布局文件的位置: frameworks/base/core/res目录下: 1. notification_template_base.xml 2. notifica ...
- mysql基操
创建数据表: create table tt1( id int, name varchar(20), age int,sex boolean ); insert into tt1 values(1,& ...
- Elasticsearch .net client NEST 5.x 使用总结
目录: Elasticsearch .net client NEST 5.x 使用总结 elasticsearch_.net_client_nest2.x_到_5.x常用方法属性差异 Elastics ...
- SP913 QTREE2 - Query on a tree II
思路 第一个可以倍增,第二个讨论在a到lca的路径上还是lca到b的路径上, 倍增即可 代码 #include <cstdio> #include <algorithm> #i ...
- UVA1030 Image Is Everything
思路 如果两个面看到颜色不同,则这个正方体一定要被删掉 然后依次考虑每个面即可 注意坐标的映射 代码 #include <cstdio> #include <algorithm> ...
- 那些按烂的Linux命令集合贴
#查看80端口运行情况netstat -anp|grep 80 #关闭某个进程(如8848pid) kill -9 8848 #运行java的war包 java -jar myproj.war #持续 ...
- redis序列化
private void setSerializer(StringRedisTemplate template) { Jackson2JsonRedisSerializer jackson2JsonR ...
- C#项目中操作Excel文件——使用NPOI库
转载自:http://blog.csdn.net/dcrmg/article/details/52356236# 感谢-牧野- 实际C#项目中经常会涉及到需要对本地Excel文件进行操作,特别是一些包 ...
- mysql分库 分页查询
Mysql海量数据分表分库如何列表分页? 1.现在使用ElasticSearch了.基于Lucene的解决方案 2.必须将mysql里的数据写入到类似hbase这样的分布式数据库,查询快.但分页.查询 ...