【Linux C语言查看SD卡大小】
1、说明
在linux 环境下,使用C预言获取SD卡容量信息
2、环境说明
硬件环境: ARM或者其他任意开发板
软件环境: Linux 任意版本
3 原理
statfs 函数,可以获取磁盘的容量、块数、剩余容量、可使用容量等信息
函数说明:
int statfs(const charpath, struct statfsbuf);
参数:
path: 位于须要查询信息的文件系统的文件路径
buf: statfs结构体类型的指针变量,用于存储文件系统的相关信息
struct statfs{long f_type; //文件系统的类型long f_bsize; //经优化后的传输块的大小long f_blocks; //文件系统数据块总数long f_bfree; //可用块数long f_bavail; //普通用户可以得到的块数long f_files; //文件结点总数long f_ffree; //可用文件结点数fisd_t f_fsid; //文件系统标识long f_namelen; //文件名的最大长度
}
特别说明:
statfs 如果用于SD卡或者U盘,那么对应的文件路径为挂载之后的路径,而不是设备节点。
比如将 /dev/mmcblk0p1 节点挂载在 /mnt/sd 目录下,则应该使用的路径为 /mnt/sd
/dev/mmcblk0p1 on /mnt/sd type vfat
4 示例代码
注意,如果不需要浮点数,则对应转换宏定义和存储的变量类型即可
#include <sys/statfs.h>
#include <stdio.h>
#include <stdint.h>#define KB 1024.0 // 2^10
#define MB 1048576.0 // 2^20
#define GB 1073741824.0 // 2^30 int main(void)
{struct statfs diskInfo;statfs("/mnt/sd", &diskInfo); // 设备挂载的节点uint64_t blocksize = diskInfo.f_bsize; // 每一个block里包含的字节数uint64_t totalsize = blocksize * diskInfo.f_blocks; // 总的字节数,f_blocks为block的数目printf("total blocks = %lld\n",diskInfo.f_blocks);printf("Total_size = %lld B = %f KB = %f MB = %f GB\n",totalsize,totalsize / KB,totalsize / MB,totalsize / GB);uint64_t freeDisk = diskInfo.f_bfree * blocksize; // 剩余空间的大小uint64_t availableDisk = diskInfo.f_bavail * blocksize; // 可用空间大小printf("Disk_free = %f MB = %f GB\n""Disk_available = %f MB = %f GB\n",freeDisk / MB,freeDisk / GB,availableDisk / MB,availableDisk / GB);
}
5 结果展示
[root@wlab kvs]# ./app
total blocks = 2144847900
Total_size = 31902400512 B = 31154688.000000 KB = 30424.500000 MB = 29.711426 GB
Disk_free = 30411.437500 MB = 29.698669 GB
Disk_available = 30411.437500 MB = 29.698669 GB
【Linux C语言查看SD卡大小】相关推荐
- linux读取树莓派SD卡,如何修复及查看SD卡上树莓派系统(转)
如何查看SD卡的分区,使用这个命令即可: sudo fdisk -l Device Boot Start End Sectors Size Id Type /dev/mm ...
- android 获取sd卡大小,Android 获取SD卡容量
SD卡作为手机的扩展存储设备,在手机中充当硬盘角色,可以让我们手机存放更多的数据以及多媒体等大体积文件.因此查看SD卡的内存就跟我们查看硬盘的剩余空间一样,是我们经常操作的一件事,那么在Android ...
- linux按照目录大小降序排列,Linux du命令查看文件夹大小并按降序排列
1. df -lh 2. du -s /usr/* | sort -rn 这是按字节排序 3. du -sh /usr/* | sort -rn 这是按兆(M)来排序 4.选出排在前面的10个 du ...
- linux du命令 前多少个,Linux du命令查看文件夹大小并按降序排列
1. df -lh 2. du -s /usr/* | sort -rn 这是按字节排序 3. du -sh /usr/* | sort -rn 这是按兆(M)来排序 4.选出排在前面的10个 du ...
- linux查看sd卡系统类型,从SD卡启动linux系统
---------------------------------------------------------------------------------------------------- ...
- linux 关机时卸载sd,Linux下U盘SD卡的自动挂载和卸载
以下内容主体转自如下两篇博客: http://blog.sina.com.cn/s/blog_557366df0100nk7r.html http://blog.csdn.net/xdw1985829 ...
- sd卡烧写linux内核,uboot从SD卡烧写内核和文件系统
环境:ubuntu 13.04 一.首先制作sd启动盘: 插入SD卡 sudo dd iflag=dsync oflag=dsync if=tiny210v2-uboot.binof=/dev/mmc ...
- 用WinHex查看SD卡FAT32文件系统结构
一鼓作气,今儿忙里抽个闲,既然前篇"原创猛料"开了个好头,今晚就继续敲一篇补补更,呵呵~ 前段时间自己曾经写了一篇关于sd卡和Fat文件系统的自学笔记(http://blog.ch ...
- SPI初始化C语言编程,SD卡spi模式读写,初始化和复位都成功了
公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:SD卡spi模式读写,初始化和复位都成功了 问题详情:我用的是内存卡 12M的!有知道是怎么回事的吗?是写入数回答:应该还得格式化, ...
最新文章
- 订单可视化(智能制造、流程再造、企业信息化) 第一篇 缘起
- python3 aes 解密
- awk 实例练习 (三)
- RHEL5+Postfix+MySql+IMAP+MailDrop+ExtMail(5)
- Java开发笔记(八十八)文件字节I/O流
- Hive分区表创建,增加及删除
- java LinkedHashMap源码解析
- [Linux] sed编辑器
- ansible 通过加密码来批量管理主机及管理Windows主机
- 一个美国人到中国当产品经理的心得:中国App设计真好!
- Maxwell和Simplorer联合仿真设置注意事项
- java爬虫写一个百度图片下载器
- 四、Node.js - 数据库与身份认证
- 测试开发进阶——常用中间件概念——JDBC——连接数据库理解
- 阿里云服务器可以解析到国外的域名吗
- 100天精通Python丨办公效率篇 —— 12、Python自动化操作 office-word(word转pdf、转docx、段落、表格、标题、页面、格式)
- 从苏宁电器到卡巴斯基第11篇:我在苏宁电器当营业员 II
- Access denied for user ‘‘@‘localhost‘ to database ‘mysql‘
- 小数分频器vhdl实现_VHDL实现分频器 - zy010101的个人空间 - OSCHINA - 中文开源技术交流社区...
- 微信小程序文件上传 前后端