statvfs () не работает правильно C ++ Linux

Я пытаюсь получить доступное дисковое пространство. Однако размер, который я получаю, не изменяется, когда я записываю больше файлов на диск. Что я делаю неправильно?

Я подтвердил, что пишу /dev/sda1 запустив df -h и, видя, что доступное пространство действительно уменьшается, я записываю файлы на диск.

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);
}

4

Решение

Вам нужно вызвать statvfs на пути, который находится на смонтированный файловая система, которую вы хотите проверить,
например

statvfs("/", &buf)

Подойдет любой путь в файловой системе, например «/Home/user/foo/tmp/file.txt»

statvfs в / dev / sda1, вероятно, сообщит об использовании файловой системы / dev.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]