statvfs()无法正常工作C++linux

statvfs() not working correctly C++ linux

本文关键字:工作 C++linux 常工作 statvfs      更新时间:2023-10-16

我正在尝试获取可用的磁盘空间。但是,当我向磁盘写入更多文件时,我返回的大小不会改变。我做错了什么?

我通过运行df -h确认了我正在向/dev/sda1写入,并且在向磁盘写入文件时看到可用空间确实在减少。

double size; //size of aval disk space
struct statvfs buf;
if((statvfs("/dev/sda1", &buf)) < 0)
{
   printf("Failed to get statvfsn");
}
else
{
    size = (((double)buf.f_bavail * buf.f_bsize) / 1048576);
    printf("You have: %.0f MB freen", size);
}

您需要在要检查的安装的文件系统上的路径上调用statvfs,例如

statvfs("/", &buf)

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

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