如何在linux上获取磁盘上的文件大小?

问题描述:

我想在linux操作系统上找到磁盘上文件的大小。 我知道这样做的命令: du -s -h如何在linux上获取磁盘上的文件大小?

有什么方法可以用c/C++代码找到它吗?

+0

我的理解是因为硬盘是块设备所以虽然我写的只是10个字节的文件时,内核会在BLOCK_SIZE方面分配块的文件。即(512字节)。假设磁盘总大小为1KB,并且我们已经创建了两个每个10bytes的文件,然后磁盘已满或没有?我对么 ? – Ashish 2011-04-26 18:01:18

+1

在Linux上,大多数文件系统使用4 KB的块大小(也就是说,每个fs块都由8个512字节块组成),所以没有块适合1KB文件系统(不考虑元数据开销等)。 – janneb 2011-04-26 19:20:08

+0

我知道了,我只举例1KB。谢谢我得到了我的答案。 – Ashish 2011-04-26 20:50:19

是,使用stat(2)系统调用:

#include <sys/stat.h> 
... 
struct stat statbuf; 

if (stat("file.dat", &statbuf) == -1) { 
    /* check the value of errno */ 
} 

printf("%9jd", (intmax_t) statbuf.st_size); 
+0

@unapersson是的,它是 – cnicutar 2011-04-26 16:03:45

+0

请注意,要获得实际的磁盘大小,您需要查看st_blocks * 512,而不是st_size – Hasturkun 2011-04-26 16:17:40

+1

+1以正确打印大整数类型! – 2011-04-26 16:37:07