C Linux 检查挂载中的可用空间

joi*_*doi 1 c linux mount

当我运行时df -h,我可以看到/dev我使用 6M 且大小为 40M ,可用大小为 34M 。

我怎样才能用c代码获取这些信息?

Yes*_*ame 5

这里

使用statvfsAPI​​:

// header for statvfs
#include <sys/statvfs.h>
Run Code Online (Sandbox Code Playgroud)

其原型statvfs

int statvfs(const char *path, struct statvfs *buf);
Run Code Online (Sandbox Code Playgroud)

结果将填充到 bufstatvfs结构中:

struct statvfs {
    unsigned long  f_bsize;    /* filesystem block size */
    unsigned long  f_frsize;   /* fragment size */
    fsblkcnt_t     f_blocks;   /* size of fs in f_frsize units */
    fsblkcnt_t     f_bfree;    /* # free blocks */
    fsblkcnt_t     f_bavail;   /* # free blocks for unprivileged users */
    fsfilcnt_t     f_files;    /* # inodes */
    fsfilcnt_t     f_ffree;    /* # free inodes */
    fsfilcnt_t     f_favail;   /* # free inodes for unprivileged users */
    unsigned long  f_fsid;     /* filesystem ID */
    unsigned long  f_flag;     /* mount flags */
    unsigned long  f_namemax;  /* maximum filename length */
};
Run Code Online (Sandbox Code Playgroud)

返回类型为:

成功后,返回零。出错时,返回 -1,并适当设置 errno。

另请参阅该命令的man3联机帮助页statvfs以获取更多详细信息。