如何查找文件系统块大小?

时间:2010-06-20 20:27:55

标签: c gcc filesystems

我想知道一种方法,通过函数或C中的编译器常量找出磁盘的块大小。

感谢

2 个答案:

答案 0 :(得分:14)

关于使用gcc编译器的信息并不有趣,因为编译器对文件系统的块大小不感兴趣,他们甚至不知道文件系统可以存在的事实......答案是系统特定的(MS Windows?GNU / Linux或其他* nix / * nix如OS?);在POSIX上你有stat函数,你可以用它来获得stat结构,它包含你可能感兴趣的字段st_blksize(文件系统I / O的blocksize)。 / p>

添加

实施例

#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。

答案 1 :(得分:2)

statvfs()报告文件系统。 stat()报告给定文件。几乎总是会这样,但是由于你要求文件系统的结果,POSIX系统的正确答案是调用statvfs()。