lstat()st_blocks输出的值不正确
问题描述:
每当我为每个目录运行我的程序时,即使使用ls-ls检查每个目录的实际大小,也会输出8。 林试图打印所有的目录的用户输入lstat()st_blocks输出的值不正确
#include <stdio.h>
#include <dirent.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
int main(int argc, char**argv)
{
struct stat path_stat;
int i;
int size=0;
for (i=1; i <argc; i++){
if (lstat(argv[i], &path_stat)) {
perror(argv[i]);
} else {
if (S_ISDIR(path_stat.st_mode)){
size=path_stat.st_blocks;
printf("%d %s \n",size,argv[i]);
}
}
}
return(0);
}
答
的st_blocks与st_blocks是分配给该目录节点512个字节块的数量。对于典型的现代文件系统,8x512 = 4096字节= 1块看起来是正确的。
它不会告诉你文件夹内的文件或类似信息的总大小,如果这是你希望获得的。
欲了解更多信息: https://askubuntu.com/questions/186813/why-does-every-directory-have-a-size-4096-bytes-4-k
为什么你认为8的输出是错误的? –
我已经检查过使用多个目录并使用ls -ls来仔细检查 – user1995933
ls -ls不能显示目录的大小。它甚至没有列出目录,而是列出了其中的文件。 –