linux获取SD卡分区使用百分比

在嵌入式系统中经常用到SD卡作数据存储,但由于SD卡存储大小有限,需要对磁盘使用量进行判断,防止数据存储失败。

获取方法:

       使用statfs函数查询文件系统状态信息,通过分区信息中的block总大小、使用量即可计算使用百分比。

1、在终端输入man statfs 查看函数statfs详细用法:

2、需要包含头文件#include <sys/vfs.h>  或者  #include<sys/statfs.h> 

3、参数path为文件系统挂载点名称。

4、参数buf 为文件系统描述结构体指针,其中statfs结构体中 f_blocks 表示文件系统总数据块数,f_bavail表示文件系统用户可用的数据块数。

5、如下为查询根文件系统使用百分比代码,若要查询sd卡使用百分比,修改sd卡挂载点名称即可。

#include <stdio.h>
#include <sys/vfs.h>

#define MOUNT_AREA_NAME "/"    //文件系统挂载点名称

unsigned int get_sd_used_percent()
{
    unsigned int percent = 0;
    struct statfs diskInfo;
    statfs(MOUNT_AREA_NAME,&diskInfo);
    unsigned long int f_blocks = diskInfo.f_blocks;
    unsigned long int f_bavail = diskInfo.f_bavail;
    if(f_bavail > f_blocks)
    {
        printf("Error: diskInfo.f_bavail > diskInfo.f_blocks!!\n");
    }
    else
    {
        double free_percent = f_bavail*100.0/f_blocks;
        unsigned int free_percent_int = (unsigned int)free_percent;
        if(free_percent - free_percent_int >= 0.5)  //四舍五入
            free_percent_int++;
        percent = 100 - free_percent_int;
        printf("-----------Disk used percent:%d%%\n",percent);
    }
    return percent;
}


int main(int argc, char *argv[])
{
    get_sd_used_percent();
    return 0;
}

猜你喜欢

转载自blog.csdn.net/fangye945a/article/details/85019936