lstat()st_blocks输出不正确的值

时间:2016-02-28 06:08:28

标签: c struct stat

每当我为每个目录运行我的程序时,即使我使用ls-ls检查每个目录的实际大小,也会输出8。 我试图打印用户输入的所有目录的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);
}

1 个答案:

答案 0 :(得分:2)

st_blocks是分配给目录节点的512字节块的数量。对于典型的现代文件系统,8x512 = 4096字节= 1个块似乎是正确的。

它不会告诉您文件夹中的文件总大小或类似信息,如果这是您希望获得的。

了解更多信息: https://askubuntu.com/questions/186813/why-does-every-directory-have-a-size-4096-bytes-4-k