计算文件系统分区的大小

1.statvfs结构体

struct statvfs {
    unsigned long f_bsize;   // 文件系统块大小
    unsigned long f_frsize;  // 文件系统片段大小
    fsblkcnt_t f_blocks;     // 文件系统总块数
    fsblkcnt_t f_bfree;      // 文件系统剩余块数
    fsblkcnt_t f_bavail;     // 文件系统可用块数
    fsfilcnt_t f_files;      // 文件系统节点总数
    fsfilcnt_t f_ffree;      // 文件系统剩余节点数
    fsfilcnt_t f_favail;     // 文件系统可用节点数
    unsigned long f_fsid;    // 文件系统标识
    unsigned long f_flag;    // 挂载标志
    unsigned long f_namemax; // 文件名最大长度
};

下面是各个成员的解释:

  • f_bsize:文件系统块的大小(以字节为单位)。
  • f_frsize:文件系统片段的大小(以字节为单位)。片段是文件系统分配的最小单位,通常与块大小相同。
  • f_blocks:文件系统的总块数。
  • f_bfree:文件系统的剩余块数。
  • f_bavail:文件系统的可用块数。这个值通常会考虑到文件系统的保留空间或者配额限制。
  • f_files:文件系统的总节点数(包括文件和目录)。
  • f_ffree:文件系统的剩余节点数。
  • f_favail:文件系统的可用节点数。
  • f_fsid:文件系统的标识号。
  • f_flag:文件系统挂载的标志。
  • f_namemax:文件系统支持的最大文件名长度。

在使用 statvfs 函数获取文件系统信息时,可以通过访问 statvfs 结构体的成员来获取所需的信息。例如,vfs.f_blocks 可以获取文件系统的总块数,vfs.f_bfree 可以获取文件系统的剩余块数。

2.查看Linux磁盘大小指令 df -h

 

 使用df -h就可以查看各个文件系统的大小

3.C语言计算文件系统大小

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

int main() {
    struct statvfs vfs;
    const char *path = "/app";  // 要检查的文件系统路径

    if (statvfs(path, &vfs) == 0) {
        unsigned long long blockSize = vfs.f_frsize;   //块大小
        unsigned long long totalSpace = blockSize * vfs.f_blocks;  
        unsigned long long freeSpace = blockSize * vfs.f_bfree;
        unsigned long long availableSpace = blockSize * vfs.f_bavail;
        unsigned long long usedSpace = totalSpace - freeSpace;

        printf("总空间:%.1fMB\n", (double)(totalSpace/1024/1024));
        printf("已使用空间:%.1f MB\n",(double)( usedSpace/1024/1024));
        printf("剩余空间:%.1fMB\n", (double)(freeSpace/1024/1024));
        printf("可用空间:%.1fMB\n", (double)(availableSpace/1024/1024));
/*
        printf("总空间:%llu 字节\n", totalSpace);
        printf("已使用空间:%llu 字节\n", usedSpace);
        printf("剩余空间:%llu 字节\n", freeSpace);
        printf("可用空间:%llu 字节\n", availableSpace);
*/
    } else {
        printf("无法获取文件系统信息。\n");
    }

    return 0;
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值