当前位置:  技术问答>linux和unix

linux系统中用C语言获取sd卡和u盘的容量

    来源: 互联网  发布时间:2016-08-29

    本文导语:  小弟我是新手,最近要在程序中获取sd卡和U盘的总容量和剩余容量,请各位大侠帮帮忙,谢谢。 | int GetStorageInfo(char * MountPoint, int *Capacity, int type) {     struct statfs statFS;     U64    ...

小弟我是新手,最近要在程序中获取sd卡和U盘的总容量和剩余容量,请各位大侠帮帮忙,谢谢。

|
int GetStorageInfo(char * MountPoint, int *Capacity, int type)
{
    struct statfs statFS;
    U64           usedBytes = 0;
    U64           freeBytes = 0;
    U64           totalBytes = 0;
    U64           endSpace = 0;

    if (statfs(MountPoint, &statFS) == -1){
        printf("statfs failed for path->[%s]n", MountPoint);
        return(-1);
    }

    totalBytes = (U64)statFS.f_blocks * (U64)statFS.f_frsize;
    freeBytes = (U64)statFS.f_bfree * (U64)statFS.f_frsize;
    usedBytes = (U64)(totalBytes - freeBytes);

    switch( type )
    {
        case 1:
            endSpace = totalBytes/1024;
            break;

        case 2:
            endSpace = usedBytes/1024;
            break;

        case 3:
            endSpace = freeBytes/1024;
            break;

        default:
            return ( -1 );
    }
    *Capacity = endSpace;
    return 0;
}

|

int GetStorageInfo(char * MountPoint,  //SD卡随便一个分区
                                 int *Capacity,  //  想要获取的空间大小
                                 int type) //获取什么类型的空间
{
  struct statfs statFS; //系统stat的结构体
  U64 usedBytes = 0;
  U64 freeBytes = 0;
  U64 totalBytes = 0;
  U64 endSpace = 0;

  if (statfs(MountPoint, &statFS) == -1){   //获取分区的状态
  printf("statfs failed for path->[%s]n", MountPoint);
  return(-1);
  }

  totalBytes = (U64)statFS.f_blocks * (U64)statFS.f_frsize; //详细的分区总容量, 以字节为单位
  freeBytes = (U64)statFS.f_bfree * (U64)statFS.f_frsize; //详细的剩余空间容量,以字节为单位
  usedBytes = (U64)(totalBytes - freeBytes); //详细的使用空间容量,以字节为单位

  switch( type )
  {
  case 1:
  endSpace = totalBytes/1024; //以KB为单位的总容量
  break;

  case 2:
  endSpace = usedBytes/1024; //以KB为单位的使用空间
  break;

  case 3:
  endSpace = freeBytes/1024; //以KB为单位的剩余空间
  break;

  default:
  return ( -1 );
  }
  *Capacity = endSpace; //这个不用说了吧
  return 0;
}

|
 我也想知道,关注.

    
 
 

您可能感兴趣的文章:

  • 请问高手在linux中用什么命令可以做linux的启动盘???在等待高手??
  • linux中用什么方式访问设备
  • ★菜鸟问:怎么在RED HAT LINUX7.2中用169上网??
  • Linux 中用java语言写串口程序,提示找不到串口
  • 请问一般嵌入式linux中用到的摄相头是哪个型号?
  • linux中用ifconfig设置完新ip后,重启linux,ip又恢复到原来的值,怎么解决呀?
  • 如何在网络中用telnet 登陆linux系统??????
  • 在linux中用什么版本的操作系统比较好
  • 请教各位高手,在linux中用什么软件播放MP3
  • LINUX中用visualbox安装的windows,能不能使用校园网拨号上网
  • 请问在Windows系统中用什么工具可以访问硬盘中Linux分区中的文件?
  • 请问在Linux中用哪种编译器调试C++较好?
  • 在Linux的Eclipse中用C语言编程,求助
  • 在xp中用vmware安装了linux但不知怎么上网
  • 关于linux内核中用i++不用++i的疑问
  • 关于Linux中用软驱?
  • 请问!linux中用什么函数可以获取CPU的频率呢?
  • linux中用wine运行 windows程序的问题!!!
  • 弱弱的问一句,在Linux模块编程中cleanup_module中用什么语句撤销申请的内存
  • linux 中用shell编写程序时遇到的一个问题,请高手指点!!!!
  • 关于linux给各分区具体容量的问题
  • 在LINUX里如和看一个目录的容量?
  • 如何获取LINUX的硬盘的个数及其容量?
  • 在linux下如何申请一块大容量虚拟内存
  • linux 增加容量的问题
  • 如何增加VMware下Linux的硬盘容量!
  • 在linux下如何解决读U盘容量等相关信息,给分的!
  • linux的/dev/sda1容量扩充问题
  • 嵌入式Linux判断U盘剩余容量
  • 急问:Linux日志文件容量有上限吗?是多少?EXT3格式的...
  • linux非root用户如何查看硬盘总容量?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux不用命令方式读文件获取网络流量,如何使用C函数调用获取网络流量信息?
  • linux获取主机名后用gethostbyname() 不能获取主机ip
  • 新手问题:Linux下如何获取进程占用的系统资源
  • LINUX下获取WINDOWS用户(组)和系统服务?
  • 关于在linux获取系统软件信息
  • linux dhcpv6概率获取不到地址
  • linux 内核空间如何获取当前时间(常用格式)
  • Linux下如何获取屏幕分辨率?
  • Linux 如何获取 所有的接口信息
  • linux程序获取显示器个数
  • 怎样获取超过4G的Linux Regular文件的大下?
  • 如何获取应用程序的当前路径(Linux)
  • 急,请问Linux中如何像windows获取网络接口是否插入网线???
  • Linux下蓝牙命令.如何获取主类信息
  • linux如何获取当前程序ID并用shell脚本停止进程
  • linux /proc 的问题。以及获取子进程虚拟内存信息。
  • Linux系统下如何获取STL帮助
  • linux如何获取在浏览器或者文本编辑器中复制的内容
  • linux下如何用C语言获取不同网段上设备的MAC地址
  • linux内核层面,有什么好的获取时间的函数
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • linux命令大全详细分类介绍及常用linux命令文档手册下载


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3