我想知道一种方法,通过函数或C中的编译器常量找出磁盘的块大小。
感谢
答案 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()。