在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获取硬盘信息相关推荐

  1. linux磁盘信息文件,linux系统获取硬盘使用信息

    1.df命令 Linux下可以用df命令获取硬盘的使用情况,通过man可以获取df命令的详细情况.df命令经常用的参数为: a:显示全部的档案系统和各分割区的磁盘使用情形 i:显示i -nodes的使 ...

  2. 获取linux命令硬盘信息,Linux 下使用命令获取硬盘信息

    本文主要是一些和硬盘相关的命令,包括如何查看硬盘的型号,容量,还有硬盘上的分区情况,来详细了解本机硬盘的状态. hdparm 如果想要在 Linux 下查看硬盘信息,可以使用命令 hdparm .这个 ...

  3. linux下获取硬盘使用情况

    1.前言 在嵌入式设备中,硬盘空间非常有限,在涉及到经常写日志的进程时候,需要考虑日志的大小和删除,不然很快就硬盘写满,导致日志程序崩溃.为了捕获硬盘写满的异常场景,我们需要在写日志过程中判断硬盘空间 ...

  4. u盘linux需要多大内存,linux下获取硬盘、内存、U盘大小及使用大小

    /* * 获取硬盘大小;内存大小;usb大小 */ #ifndef SYSINFOGET_H #define SYSINFOGET_H #include //磁盘信息 #include #includ ...

  5. Linux编程获取网络信息总结

    Linux下C获取所有可用网卡信息 在Linux下开发网络程序时,经常会遇到需要取本地网络接口名.IP.广播地址 .子网掩码或者MAC地址等信息的需求,最常见的办法是配合宏SIOCGIFHWADDR. ...

  6. 计算机无法正确抓取硬盘信息,获取硬盘信息失败?2招轻松解决,u盘装系统就这么简单!...

    原标题:获取硬盘信息失败?2招轻松解决,u盘装系统就这么简单! U盘装系统是近来经常听到的一个词汇,现在的人都不再像以前那样事事花钱请人,能自己动手的决不多啰嗦.况且u盘装系统确实也不是个技术含量很高 ...

  7. python 获取硬盘信息失败请谨慎操作_【裸机装系统】获取硬盘信息失败,请谨慎操作!(示例代码)...

    公司新买了两台服务器,需要安装操作系统. 我在安装其中一台进PE时,提示"获取硬盘信息失败,请谨慎操作!" 研究了半天,网上说是因为磁盘设置了RAID,于是我把RAID删除.按CT ...

  8. python 获取硬盘信息失败请谨慎操作_【裸机装系统】获取硬盘信息失败,请谨慎操作!...

    公司新买了两台服务器,需要安装操作系统. 我在安装其中一台进PE时,提示"获取硬盘信息失败,请谨慎操作!" 研究了半天,网上说是因为磁盘设置了RAID,于是我把RAID删除.按CT ...

  9. python 获取硬盘信息失败请谨慎操作_大白菜U盘装系统提示获取硬盘信息失败怎么办?...

    相信不少的用户在使用u盘装系统的时候都有遇到过获取硬盘信息失败的提示导致安装不了,出现这个问题主要是由于硬盘模式与当前pe系统不兼容所导致,那么该怎么解决这个问题呢?接下来就和小编一起来看一下u盘装系 ...

最新文章

  1. linux 内核定时器 3.11 版本,Linux内核定时器简单使用
  2. Nilearn中的基本操作和查看
  3. python项目-python项目
  4. 12款界面精美的 HTML5 CSS3 网站模板
  5. 成功解决pywintypes.com_error: (-2147221005, '无效的类字符串', None, None)
  6. wpf 加载资源html,从资源文件加载WPF样式
  7. 数百万台车联网设备同时在线 0 故障,中瑞集团的云原生探索之路
  8. [Java基础]Collection集合
  9. Python 错误和异常小结[转]
  10. 如何 给给软件开发 添加 代理_如何与软件开发公司有效沟通
  11. linux只能用一半的内存,linux可用内存足够为什么还用swap
  12. 单片机IC卡读取开题报告_基于单片机的IC卡读写器设计(含开题报告)
  13. sftp非交互式每日定时拉取增量数据文件至本地合并至存量
  14. 华为hcna认证考完多久考hcip?华为认证的发展就业前景怎么样?
  15. c 语言读取硬盘序列号,C++读取硬盘序列号
  16. PMP 备考指南之计算题汇总
  17. php自学笔记四扫雷完成
  18. mysql:mysql的基本函数
  19. html在360浏览器如何修改字体大小,360浏览器网页中字体大小如何修改
  20. 肇庆学院"菜鸟杯"程序设计竞赛2019(同步赛)(回顾补题)

热门文章

  1. python中常用的文件和目录操作(一)
  2. js字符串中换行符不起作用如何解决
  3. 二级计算机c语言模拟考试程序,计算机二级c语言模拟考试题
  4. mysql keep alive_mysql+keepalive 高可用
  5. 计算机办公软件应用操作,《计算机基本操作与办公软件应用1》教程.doc
  6. 1045:收集瓶盖赢大奖
  7. Android 仿耳觅滑动动画,耳觅手机版下载_耳觅安卓版下载-优基地
  8. 吴恩达究竟是人工智能的布道者还是卖水人
  9. js点一个不行时,点两个:
  10. iOS12 SKStoreViewController crash修复