类Unix系统中获取文件磁盘占用空间的问题
注意,不是获取文件大小,而是占用磁盘空间的大小。例如我的~/.bash_profile文件,文件大小为238个字节,磁盘占用为4KB。
我使用了stat函数来获取文件信息,代码如下:
#include <stdio.h>
#include <sys/stat.h>
int main(int argc, const char *argv[]) {
struct stat statbuff;
stat("/Users/XX/.bash_profile", &statbuff);
printf("filesize = %lld, block = %lld, blocksize = %d\n", statbuff.st_size, statbuff.st_blocks, statbuff.st_blksize);
return 0;
}
编译后运行的结果为:
filesize = 238, block = 8, blocksize = 4096
意思是,文件大小为238个字节,占用了8个块,每个块的大小为4096个字节
如果按照这个数据来计算,文件的磁盘占用应该为 8 * 4096 = 32KB
但是使用du -h ~/.bash_profile命令得到的结果是:
4.0K /Users/XX/.bash_profile
不知道哪里出了问题,诚心向大家请教~
[此贴子已经被作者于2016-11-23 18:43编辑过]