linux的statfs命令
linux的statfs命令
linux下的statfs主要是用來獲取磁盤空間,下面由學(xué)習(xí)啦小編為大家搜集整理了linux的statfs命令的相關(guān)知識,希望對大家有幫助!
linux的statfs命令詳解
statfs 主要用來獲得磁盤的空間
sun 系統(tǒng)下為 statvfs, linux系統(tǒng)下為statfs
用法:
#include <sys/vfs.h> /* 或者 <sys/statfs.h> */
int statfs(const char *path, struct statfs *buf);
int fstatfs(int fd, struct statfs *buf);
參數(shù):
path: 位于需要查詢信息的文件系統(tǒng)的文件路徑名。
fd: 位于需要查詢信息的文件系統(tǒng)的文件描述詞。
buf:以下結(jié)構(gòu)體的指針變量,用于儲存文件系統(tǒng)相關(guān)的信息
struct statfs {
long f_type; /* 文件系統(tǒng)類型 */
long f_bsize; /* 經(jīng)過優(yōu)化的傳輸塊大小 */
long f_blocks; /* 文件系統(tǒng)數(shù)據(jù)塊總數(shù) */
long f_bfree; /* 可用塊數(shù) */
long f_bavail; /* 非超級用戶可獲取的塊數(shù) */
long f_files; /* 文件結(jié)點總數(shù) */
long f_ffree; /* 可用文件結(jié)點數(shù) */
fsid_t f_fsid; /* 文件系統(tǒng)標(biāo)識 */
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里包含的字節(jié)數(shù)
unsigned long long totalsize = blocksize * diskInfo.f_blocks; //總的字節(jié)數(shù),f_blocks為block的數(shù)目
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;
}