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


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

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>頭文件,下面是一個簡單的測試:

#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,查看磁盤所用情況進行對比:
在這里插入圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM