Linux编程之判断磁盘空间大小
2024-08-25 21:48:08
一、引言
在开发过程中,经常会碰到这样的情况,在往指定目录下拷贝文件时,需要考虑到磁盘空间的大小是否足够来决定什么时候暂停自己的程序
二、用的函数
<sys/statfs.h>
int statfs(const char *path, struct statfs *buf);
参考:http://man7.org/linux/man-pages/man2/statfs.2.html
三、示例
// 磁盘空间类型
enum EMDiskSizeType
{
TOTAL_SIZE, // 全部空间
FREE_SIZE // 剩余空间
}; //*****************************************************************************
//@Function : 统计指定路径所在磁盘的大小
//@in : strDir 指定路径
//@in : diskType 指定需要的磁盘大小类型,TOTAL_SIZE:总大小
//FREE_SIZE:剩余大小
//@Description : 返回指定路径所在磁盘的大小,单位MB
//*****************************************************************************
unsigned long long GetDiskSize(string strDir, EMDiskSizeType diskType)
{
unsigned long long llCount = ;
struct statfs diskInfo;
if (statfs(strDir.c_str(), &diskInfo) == -)
{
OutLog(SLL_ERROR, "getdisksize error, errno : %d, error : %s", errno, strerror(errno));
llCount = ;
}
else
{
switch(diskType)
{
case TOTAL_SIZE:
llCount = diskInfo.f_bsize * diskInfo.f_blocks;
llCount = llCount >> ;
break;
case FREE_SIZE:
llCount = diskInfo.f_bsize * diskInfo.f_bfree;
llCount = llCount >> ;
break;
default:
llCount = ;
break;
}
}
return llCount;
}
对该函数进行了一个简单的封装,实现的功能是:返回指定路径所在磁盘的指定类型大小(总大小、剩余大小)
最新文章
- 《Ansible权威指南》笔记(1)——安装,ssh密钥登陆,命令
- 在eclipse的maven插件中搜寻本地仓库中的jar搜索不到的解决方案
- android 入门 005(登录记住)
- (转)直接拿来用!最火的iOS开源项目(二)
- DIV CSS阴影
- ajax 请求二进制流 图片 文件 XMLHttpRequest 请求并处理二进制流数据 之最佳实践
- 关于WinForm/Web如何使用缓存Cach
- Java程序猿之从菜鸟到职场高手的必看
- iOS 加载本地的html文件
- Android查看联系人简单记录
- app内嵌vue h5,安卓和ios拦截H5点击事件
- jq动画设置图片抽奖(修改效果版)
- 1.Django学习
- 剑指offer 01:二维数组中的查找
- Redis详解(七)------ AOF 持久化
- 动态样式CSS
- 基础运动move.js
- react-router JS 控制路由跳转(转载)
- Linux基本命令学习与使用
- zabbix日常监控项TCP连接状态(六)