Как найти размер блока файловой системы? - PullRequest
5 голосов
/ 21 июня 2010

Я хотел бы узнать способ определения размера блока диска с помощью функции или константы компилятора в C ..

спасибо

Ответы [ 2 ]

14 голосов
/ 21 июня 2010

Информация о том, что вы используете компилятор gcc, не интересна, поскольку компиляторы не интересуются размером блока файловой системы, они даже не знают о том, что файловая система может существовать ... ответ зависит от системы (MSWindows? GNU / Linux или другие * nix / * nix, подобные ОС?);в POSIX у вас есть функция stat, вы можете использовать ее, чтобы иметь структуру stat, которая содержит поле st_blksize (размер блока для ввода / вывода файловой системы), которое может быть тем, что вас интересует.* ADD

Пример

#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>


int main()
{
  struct stat fi;
  stat("/", &fi);
  printf("%d\n", fi.st_blksize);
  return 0;
}

Сообщает вам о файловой системе, используемой в / (root);например, для меня это выводит 4096.

2 голосов
/ 21 июня 2010

statvfs () сообщает о файловой системе. stat () сообщает о данном файле. Почти всегда это будет одинаково, но поскольку вы запросили результат от файловой системы, правильный ответ для систем POSIX - вызвать statvfs ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...