Linux c获取硬盘信息
在linux系统中为获取磁盘的剩余空间大小或者其他的一些硬盘信息,可以通过以下两种方式获取:直接在终端通过指令获取或者通过linux c编程获取硬盘的信息结构体。
一、指令获取
打开终端,在终端输入:
df /home -h
其中/home为需要查询的目录,输出结果为:
二、硬盘信息结构体
硬盘的statfs信息结构如下:
一般我们想要了解的就是硬盘的剩余大小,statfs结构中可用空间块数有两种f_bfree和 f_bavail,前者是硬盘所有剩余空间,后者为非root用户剩余空间。
三、C代码
建立获取及输出硬盘信息的类,头文件.h:
#ifndef STATFSINFO_H
#define STATFSINFO_H
#include <stdio.h>
#include <stdlib.h>
#include <sys/statfs.h>
#include <sys/vfs.h>
#include <string.h>
#include <errno.h>
typedef struct statfs DISK,*pDISK;
class StatfsInfo
{ public:StatfsInfo(); virtual ~StatfsInfo(); int getDiskInfo(const char *path); int calDiskInfo(char *diskTotal,char *diskAvail,char *diskFree);private: DISK diskInfo; pDISK pDiskInfo;
};
#endif // STATFSINFO_H
类的实现,.cpp文件:
#include "StatfsInfo.h"
StatfsInfo::StatfsInfo()
{pDiskInfo = &diskInfo; memset(pDiskInfo,0,sizeof(DISK));//ctor
}
StatfsInfo::~StatfsInfo()
{//dtor
}
//参数:要获取磁盘信息的位置 //返回值:成功返回1,失败返回0
int StatfsInfo::getDiskInfo(const char *path)
{char dpath[100]=DEFAULT_DISK_PATH;//设置默认位置 int flag=0; if(NULL!=path){strcpy(dpath,path); } if(-1==(flag=statfs(dpath,pDiskInfo)))//获取包含磁盘空间信息的结构体 {perror("getDiskInfo statfs fail"); return 0; } return 1;
}
//计算磁盘总空间,非超级用户可用空间,磁盘所有剩余空间,计算结果以字符串的形式存储到三个字符串里面,单位为MB
int StatfsInfo::calDiskInfo(char *diskTotal,char *diskAvail,char *diskFree)
{unsigned long long total=0,avail=0,free=0,blockSize=0; int flag=0; if(!diskTotal&&diskAvail&&diskFree&&pDiskInfo) {printf("\ncalDiskInfo param null!\n"); return 0; } blockSize=pDiskInfo->f_bsize;//每块包含字节大小 total=pDiskInfo->f_blocks*blockSize;//磁盘总空间 avail=pDiskInfo->f_bavail*blockSize;//非超级用户可用空间 free=pDiskInfo->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()
{StatfsInfo currStatfsInfo; char str1[30],str2[30],str3[30];currStatfsInfo.getDiskInfo(DEFAULT_DISK_PATH);//获取磁盘信息结构体 currStatfsInfo.calDiskInfo(str1,str2,str3);//计算磁盘信息结构体 printf("\ntotal:%s avail:%s free%s\n",str1,str2,str3);return 0;
}
运行结果:
Linux c获取硬盘信息相关推荐
- linux磁盘信息文件,linux系统获取硬盘使用信息
1.df命令 Linux下可以用df命令获取硬盘的使用情况,通过man可以获取df命令的详细情况.df命令经常用的参数为: a:显示全部的档案系统和各分割区的磁盘使用情形 i:显示i -nodes的使 ...
- 获取linux命令硬盘信息,Linux 下使用命令获取硬盘信息
本文主要是一些和硬盘相关的命令,包括如何查看硬盘的型号,容量,还有硬盘上的分区情况,来详细了解本机硬盘的状态. hdparm 如果想要在 Linux 下查看硬盘信息,可以使用命令 hdparm .这个 ...
- linux下获取硬盘使用情况
1.前言 在嵌入式设备中,硬盘空间非常有限,在涉及到经常写日志的进程时候,需要考虑日志的大小和删除,不然很快就硬盘写满,导致日志程序崩溃.为了捕获硬盘写满的异常场景,我们需要在写日志过程中判断硬盘空间 ...
- u盘linux需要多大内存,linux下获取硬盘、内存、U盘大小及使用大小
/* * 获取硬盘大小;内存大小;usb大小 */ #ifndef SYSINFOGET_H #define SYSINFOGET_H #include //磁盘信息 #include #includ ...
- Linux编程获取网络信息总结
Linux下C获取所有可用网卡信息 在Linux下开发网络程序时,经常会遇到需要取本地网络接口名.IP.广播地址 .子网掩码或者MAC地址等信息的需求,最常见的办法是配合宏SIOCGIFHWADDR. ...
- 计算机无法正确抓取硬盘信息,获取硬盘信息失败?2招轻松解决,u盘装系统就这么简单!...
原标题:获取硬盘信息失败?2招轻松解决,u盘装系统就这么简单! U盘装系统是近来经常听到的一个词汇,现在的人都不再像以前那样事事花钱请人,能自己动手的决不多啰嗦.况且u盘装系统确实也不是个技术含量很高 ...
- python 获取硬盘信息失败请谨慎操作_【裸机装系统】获取硬盘信息失败,请谨慎操作!(示例代码)...
公司新买了两台服务器,需要安装操作系统. 我在安装其中一台进PE时,提示"获取硬盘信息失败,请谨慎操作!" 研究了半天,网上说是因为磁盘设置了RAID,于是我把RAID删除.按CT ...
- python 获取硬盘信息失败请谨慎操作_【裸机装系统】获取硬盘信息失败,请谨慎操作!...
公司新买了两台服务器,需要安装操作系统. 我在安装其中一台进PE时,提示"获取硬盘信息失败,请谨慎操作!" 研究了半天,网上说是因为磁盘设置了RAID,于是我把RAID删除.按CT ...
- python 获取硬盘信息失败请谨慎操作_大白菜U盘装系统提示获取硬盘信息失败怎么办?...
相信不少的用户在使用u盘装系统的时候都有遇到过获取硬盘信息失败的提示导致安装不了,出现这个问题主要是由于硬盘模式与当前pe系统不兼容所导致,那么该怎么解决这个问题呢?接下来就和小编一起来看一下u盘装系 ...
最新文章
- linux 内核定时器 3.11 版本,Linux内核定时器简单使用
- Nilearn中的基本操作和查看
- python项目-python项目
- 12款界面精美的 HTML5 CSS3 网站模板
- 成功解决pywintypes.com_error: (-2147221005, '无效的类字符串', None, None)
- wpf 加载资源html,从资源文件加载WPF样式
- 数百万台车联网设备同时在线 0 故障,中瑞集团的云原生探索之路
- [Java基础]Collection集合
- Python 错误和异常小结[转]
- 如何 给给软件开发 添加 代理_如何与软件开发公司有效沟通
- linux只能用一半的内存,linux可用内存足够为什么还用swap
- 单片机IC卡读取开题报告_基于单片机的IC卡读写器设计(含开题报告)
- sftp非交互式每日定时拉取增量数据文件至本地合并至存量
- 华为hcna认证考完多久考hcip?华为认证的发展就业前景怎么样?
- c 语言读取硬盘序列号,C++读取硬盘序列号
- PMP 备考指南之计算题汇总
- php自学笔记四扫雷完成
- mysql:mysql的基本函数
- html在360浏览器如何修改字体大小,360浏览器网页中字体大小如何修改
- 肇庆学院"菜鸟杯"程序设计竞赛2019(同步赛)(回顾补题)
热门文章
- python中常用的文件和目录操作(一)
- js字符串中换行符不起作用如何解决
- 二级计算机c语言模拟考试程序,计算机二级c语言模拟考试题
- mysql keep alive_mysql+keepalive 高可用
- 计算机办公软件应用操作,《计算机基本操作与办公软件应用1》教程.doc
- 1045:收集瓶盖赢大奖
- Android 仿耳觅滑动动画,耳觅手机版下载_耳觅安卓版下载-优基地
- 吴恩达究竟是人工智能的布道者还是卖水人
- js点一个不行时,点两个:
- iOS12 SKStoreViewController crash修复