使用 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
        }

基于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,并将其与可用空间进行比较。