Как найти размер блока файловой системы?

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

спасибо

6
задан maty_nz 20 June 2010 в 20:45
поделиться

2 ответа

Информация о том, что вы используете компилятор gcc, не интересна, поскольку компиляторы не интересуются размером блока файловой системы, они даже не знают о том, что файловая система может существовать ... ответ зависит от системы (MS Windows? 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;
}

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

15
ответ дан 8 December 2019 в 13:43
поделиться

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

2
ответ дан 8 December 2019 в 13:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: