statvfs()无法正常使用C linux

我想获得可用的磁盘空间.但是,当我将更多文件写入磁盘时,我回来的大小不会改变.我究竟做错了什么?

我确认我正在通过运行df -h写入/ dev / sda1,并且在将文件写入磁盘时看到可用空间确实在下降.

double size; //size of aval disk space
struct statvfs buf;

if((statvfs("/dev/sda1", &buf)) < 0)
{
   printf("Failed to get statvfs\n");
}
else
{
    size = (((double)buf.f_bavail * buf.f_bsize) / 1048576);
    printf("You have: %.0f MB free\n", size);
}

最佳答案 您需要在要检查的已挂载文件系统上的路径上调用statvfs,

例如

statvfs("/", &buf)

文件系统上的任何路径都可以,例如“/home/user/foo/tmp/file.txt”

/ dev / sda1上的statvfs可能会报告/ dev文件系统的使用情况.

点赞