linux查询磁盘使用情况
df -h
检测磁盘空间-Linux
#if defined(__linux__) || defined(__linux) struct statvfs st; if (::statvfs(_path.data(), &st) != 0) { do warning } auto freeSize = st.f_bsize * st.f_bfree;//空闲字节,还能输出总缓冲 if (freeSize < N字节) { do warning } #endif
#include <sys/statvfs.h>
int statvfs(const char *path, struct statvfs *buf);
int fstatvfs(int fd, struct statvfs *buf);
- path 要获取磁盘信息的路径,只要是挂载到操作文件系统的路径即可。
- fd 是已打开文件描述符,代表要获取磁盘信息的文件。
- buf 指向一个statvfs结构,定义如下
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; /* Number of free blocks 空闲块数量 */ fsblkcnt_t f_bavail; /* Number of free blocks for unprivileged users 非特权用户的空闲块数量 */ fsfilcnt_t f_files; /* Number of inodes i节点数量 */ fsfilcnt_t f_ffree; /* Number of free inodes 空闲i节点数量 */ fsfilcnt_t f_favail; /* Number of free inodes for unprivileged users 非特权用户的空闲i节点数量 */ unsigned long f_fsid; /* Filesystem ID 文件系统id */ unsigned long f_flag; /* Mount flags 挂载标识 */ unsigned long f_namemax; /* Maximum filename length 最大文件名长度 */ };