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卡大小】相关推荐

  1. linux读取树莓派SD卡,如何修复及查看SD卡上树莓派系统(转)

    如何查看SD卡的分区,使用这个命令即可: sudo fdisk -l Device         Boot Start      End  Sectors  Size Id Type /dev/mm ...

  2. android 获取sd卡大小,Android 获取SD卡容量

    SD卡作为手机的扩展存储设备,在手机中充当硬盘角色,可以让我们手机存放更多的数据以及多媒体等大体积文件.因此查看SD卡的内存就跟我们查看硬盘的剩余空间一样,是我们经常操作的一件事,那么在Android ...

  3. linux按照目录大小降序排列,Linux du命令查看文件夹大小并按降序排列

    1. df -lh 2. du -s /usr/* | sort -rn 这是按字节排序 3. du -sh /usr/* | sort -rn 这是按兆(M)来排序 4.选出排在前面的10个 du ...

  4. linux du命令 前多少个,Linux du命令查看文件夹大小并按降序排列

    1. df -lh 2. du -s /usr/* | sort -rn 这是按字节排序 3. du -sh /usr/* | sort -rn 这是按兆(M)来排序 4.选出排在前面的10个 du ...

  5. linux查看sd卡系统类型,从SD卡启动linux系统

    ---------------------------------------------------------------------------------------------------- ...

  6. linux 关机时卸载sd,Linux下U盘SD卡的自动挂载和卸载

    以下内容主体转自如下两篇博客: http://blog.sina.com.cn/s/blog_557366df0100nk7r.html http://blog.csdn.net/xdw1985829 ...

  7. sd卡烧写linux内核,uboot从SD卡烧写内核和文件系统

    环境:ubuntu 13.04 一.首先制作sd启动盘: 插入SD卡 sudo dd iflag=dsync oflag=dsync if=tiny210v2-uboot.binof=/dev/mmc ...

  8. 用WinHex查看SD卡FAT32文件系统结构

    一鼓作气,今儿忙里抽个闲,既然前篇"原创猛料"开了个好头,今晚就继续敲一篇补补更,呵呵~ 前段时间自己曾经写了一篇关于sd卡和Fat文件系统的自学笔记(http://blog.ch ...

  9. SPI初始化C语言编程,SD卡spi模式读写,初始化和复位都成功了

    公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:SD卡spi模式读写,初始化和复位都成功了 问题详情:我用的是内存卡 12M的!有知道是怎么回事的吗?是写入数回答:应该还得格式化, ...

最新文章

  1. 订单可视化(智能制造、流程再造、企业信息化) 第一篇 缘起
  2. python3 aes 解密
  3. awk 实例练习 (三)
  4. RHEL5+Postfix+MySql+IMAP+MailDrop+ExtMail(5)
  5. Java开发笔记(八十八)文件字节I/O流
  6. Hive分区表创建,增加及删除
  7. java LinkedHashMap源码解析
  8. [Linux] sed编辑器
  9. ansible 通过加密码来批量管理主机及管理Windows主机
  10. 一个美国人到中国当产品经理的心得:中国App设计真好!
  11. Maxwell和Simplorer联合仿真设置注意事项
  12. java爬虫写一个百度图片下载器
  13. 四、Node.js - 数据库与身份认证
  14. 测试开发进阶——常用中间件概念——JDBC——连接数据库理解
  15. 阿里云服务器可以解析到国外的域名吗
  16. 100天精通Python丨办公效率篇 —— 12、Python自动化操作 office-word(word转pdf、转docx、段落、表格、标题、页面、格式)
  17. 从苏宁电器到卡巴斯基第11篇:我在苏宁电器当营业员 II
  18. Access denied for user ‘‘@‘localhost‘ to database ‘mysql‘
  19. 小数分频器vhdl实现_VHDL实现分频器 - zy010101的个人空间 - OSCHINA - 中文开源技术交流社区...
  20. 微信小程序文件上传 前后端

热门文章

  1. 管理者必看!如何打通数据孤岛问题?附52页数据决策分析平台方案
  2. FPGA解码4line MIPI视频 IMX291/IMX290摄像头采集 提供工程源码和技术支持
  3. 永久可用的代理IP和推广佣金的游戏
  4. 碳化铬(II)是什么意思?
  5. 安卓设备fastboot刷机
  6. SOUI视频教程 官方论坛
  7. Linda Rising:“你相信谁?”
  8. java枚举类是怎么初始化的,为什么说枚举类是线程安全的
  9. 龙光城的洋房和惠州的花园
  10. Python学习笔记05----条件、循环及其他语句