胡萝贝୧⍤⃝? 2023-02-23 14:56 采纳率: 58.3%
浏览 22
已结题

使用 statvfs() 检测块设备空间,如何比较?

请问一下,我使用 statvfs() 想检测块设备磁盘空间是否大于6G,该怎么比较呢?我用的这个方法好像行不通。

        int state1;
        struct statvfs vfs1;
        fsblkcnt_t block_size = 0;
        fsblkcnt_t free_size;
        state1 = statvfs("/dev/mmcblk1p7",&vfs1);
        block_size = vfs1.f_bsize;
        free_size = vfs1.f_bfree * block_size;
        int size = (int)free_size/1024/1024/1024;
        if(size > 6){
            //doing something
        }else{
            //doing something
        }
  • 写回答

1条回答 默认 最新

  • 社区专家-Monster-XH 2023-02-23 15:02
    关注

    基于Monster 组和GPT的调写:
    用f_frsize或者f_bsize计算磁盘空间的总大小和剩余空间的大小,然后比较大小来确定是否大于6G
    下面是一个示例代码:

    #include <stdio.h>
    #include <stdlib.h>
    #include <sys/statvfs.h>
    
    int main(void) {
        struct statvfs fs;
        int64_t total_size, free_size, required_size;
    
        if (statvfs("/", &fs) != 0) {
            perror("statvfs");
            exit(EXIT_FAILURE);
        }
    
        total_size = (int64_t)fs.f_frsize * fs.f_blocks;
        free_size = (int64_t)fs.f_frsize * fs.f_bfree;
    
        required_size = 6LL * 1024LL * 1024LL * 1024LL;  // 6 GB in bytes
    
        if (free_size > required_size) {
            printf("Disk space is greater than 6GB.\n");
        } else {
            printf("Disk space is less than or equal to 6GB.\n");
        }
    
        return 0;
    }
    
    
    

    用了f_frsize计算块的大小,然后将其乘以f_blocks和f_bfree来计算磁盘的总大小和剩余空间大小。最后,将6GB的字节数赋值给required_size,并将其与可用空间进行比较。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 3月3日
  • 已采纳回答 2月23日
  • 创建了问题 2月23日

悬赏问题

  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来