linux下利用statfs函數查看磁盤使用狀況

  最近在學習Linux的過程當中,須要查看磁盤使用狀況,因而查找資料,發現statfs函數能夠勝任這個任務.下面將簡單介紹statfs函數及其使用。
  函數以下:
  int statfs(const charpath, struct statfsbuf);
 參數:
  path: 位於須要查詢信息的文件系統的文件路徑
  buf: statfs結構體類型的指針變量,用於存儲文件系統的相關信息
  **web

struct statfs{
	long f_type;     //文件系統的類型
	long f_bsize;   //經優化後的傳輸塊的大小
	long f_blocks;  //文件系統數據塊總數
	long f_bfree;    //可用塊數
	long f_bavail;   //普通用戶可以得到的塊數
	long f_files;      //文件結點總數
	long f_ffree;     //可用文件結點數
	fisd_t f_fsid;     //文件系統標識
	long f_namelen;  //文件名的最大長度
}

要使用該函數首先要導入<sys/statfs.h>頭文件,下面是一個簡單的測試:svg

#include <sys/statfs.h>
#include <stdio.h>
#include <stdint.h>

#define KB 1024.0       // 2^10
#define MB 1048576.0    // 2^20 
#define GB 1073741824.0 // 2^30 

int main(void)
{
        struct statfs diskInfo;

        statfs("/home/", &diskInfo);
        uint64_t blocksize = diskInfo.f_bsize;                   // 每一個block裏包含的字節數
        uint64_t totalsize = blocksize * diskInfo.f_blocks;      // 總的字節數,f_blocks爲block的數目
        printf("塊數:%lld",diskInfo.f_blocks);
        printf("Total_size = %lld B = %f KB = %f MB = %f GB\n",
                totalsize,
                totalsize / KB,
                totalsize / MB,
                totalsize / GB);

        uint64_t freeDisk = diskInfo.f_bfree * blocksize;       // 剩餘空間的大小
        uint64_t availableDisk = diskInfo.f_bavail * blocksize; // 可用空間大小
        printf("Disk_free = %f MB = %f GB\n"
                        "Disk_available = %f MB = %f GB\n",
                freeDisk / MB,
                freeDisk / GB,
                availableDisk / MB,
                availableDisk / GB);

        return 0;
}

  運行結果以下圖所示:
在這裏插入圖片描述
鍵入 df -h /home,查看磁盤所用狀況進行對比:
在這裏插入圖片描述函數

相關文章
相關標籤/搜索