学习啦 > 学习电脑 > 操作系统 > Linux教程 > linux的statfs命令

linux的statfs命令

时间: 佳洲1085 分享

linux的statfs命令

  linux下的statfs主要是用来获取磁盘空间,下面由学习啦小编为大家搜集整理了linux的statfs命令的相关知识,希望对大家有帮助!

  linux的statfs命令详解

  statfs 主要用来获得磁盘的空间

  sun 系统下为 statvfs, linux系统下为statfs

  用法:

  #include <sys/vfs.h> /* 或者 <sys/statfs.h> */

  int statfs(const char *path, struct statfs *buf);

  int fstatfs(int fd, struct statfs *buf);

  参数:

  path: 位于需要查询信息的文件系统的文件路径名。

  fd: 位于需要查询信息的文件系统的文件描述词。

  buf:以下结构体的指针变量,用于储存文件系统相关的信息

  struct statfs {

  long f_type; /* 文件系统类型 */

  long f_bsize; /* 经过优化的传输块大小 */

  long f_blocks; /* 文件系统数据块总数 */

  long f_bfree; /* 可用块数 */

  long f_bavail; /* 非超级用户可获取的块数 */

  long f_files; /* 文件结点总数 */

  long f_ffree; /* 可用文件结点数 */

  fsid_t f_fsid; /* 文件系统标识 */

  long f_namelen; /* 文件名的最大长度 */

  };

  linux的statfs命令简单测试程序

  test.c#include <sys/statfs.h>

  #include <stdio.h>

  int main(int argc,char **argv)

  {

  struct statfs diskInfo;

  statfs(argv[1], &diskInfo);

  unsigned long long blocksize = diskInfo.f_bsize; //每个block里包含的字节数

  unsigned long long totalsize = blocksize * diskInfo.f_blocks; //总的字节数,f_blocks为block的数目

  printf("Total_size = %llu B = %llu KB = %llu MB = %llu GB\n",

  totalsize, totalsize>>10, totalsize>>20, totalsize>>30);

  unsigned long long freeDisk = diskInfo.f_bfree * blocksize; //剩余空间的大小

  unsigned long long availableDisk = diskInfo.f_bavail * blocksize; //可用空间大小

  printf("Disk_free = %llu MB = %llu GB\nDisk_available = %llu MB = %llu GB\n",

  freeDisk>>20, freeDisk>>30, availableDisk>>20, availableDisk>>30);

  return 0;

  }

3632279