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

Ash*_*ish 11 c c++ linux

我想在linux OS上找到磁盘上文件的大小.我知道这样做的命令:du -s -h

有没有办法使用c/c ++代码找到它?

Bla*_*iev 17

是的,使用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);
Run Code Online (Sandbox Code Playgroud)

  • @Ashish:st_size是文件的大小,即它包含的字节数.文件占用磁盘的空间量由st_blocks*512给出,如Hasturkun所述; 这是'du'使用的大小. (4认同)
  • 请注意,要获得实际磁盘大小,您需要查看 st_blocks*512,而不是 st_size (2认同)
  • stat没有给出du -s -h file.dat给出的相同大小. (2认同)