当前位置: 首页 > article >正文

Linux下使用c语言获取一个挂载文件夹可用存储空间以及使用率

直接调用函数获取,发现读到的只有1GB左右,实际是29GB,只能手写一个获取参数函数。

int tfStorageSize(int64_t *availableSpaceMB,int *perCentStorage)
{
    FILE *fp;
    char buffer[1024];
    char *line = NULL;
    int64_t availableSpace = -1, blocks = 0, usedSpace = 0;
    int usedPercent = -1;
    size_t len = 0;
    ssize_t read;
    if(getTfCardMountStatus() == false)
    {
        printf("TF no mount\n");
        return 1;
    }
    fp = popen(DF_COMMAND, "r");
    if (fp == NULL)
    {
        perror("popen");
        exit(EXIT_FAILURE);
    }
    while ((read = getline(&line, &len, fp)) != -1)
    {
        strncpy(buffer, line, sizeof(buffer) - 1);
        buffer[sizeof(buffer) - 1] = '\0';
        if (strstr(buffer, MOUNT_POINT) != NULL)
        {
            printf("readStr:%s\n", buffer);
            sscanf(buffer, "/dev/mmcblk1p1 %llu %llu %llu %d%% /mnt/recordData", &blocks, &usedSpace, &availableSpace, &usedPercent);
            printf("available =%llu MB =%.2f GB.used %d%%\n", availableSpace,((double)availableSpace / 1024.0), usedPercent);
            *perCentStorage = usedPercent;
            *availableSpaceMB = availableSpace;
        }
    }
    pclose(fp);
    free(line);
    if (availableSpace == -1 || usedPercent == -1)
    {
        return 1;
    }
    return 0;
}


http://www.kler.cn/news/355751.html

相关文章:

  • 【已解决】docx4j 结合Thymeleaf 的各种依赖问题(坑)
  • 【Spring声明式事务失效的12种场景测试】
  • Redis 数据类型Bitmaps(位图)
  • ES-入门-javaApi-文档-新增-删除
  • 【芙丽芳丝净润洗面霜和雅漾舒护活泉喷雾
  • AnaTraf | TCP重传的工作原理与优化方法
  • 【数据分享】1901-2023年我国省市县三级逐月最低气温(免费获取/Shp/Excel格式)
  • 详解tcpdump
  • (4) cuda cudnn TensorRT安装及配置
  • Qt(信号槽)
  • 等保测评与网络安全应急响应
  • uni-app 实现好看易用的抽屉效果
  • 实时计算Flink应用场景
  • PMP--必刷题–解题–161-172
  • python编程:常用模块分类整理
  • 打包使用pythn编写的maya插件,使用pyeal打包
  • Karmada核心概念
  • beyond compare 这个授权密钥已被吊销
  • Lucene 倒排索引
  • 5.深度学习计算