linux下C编程--利用statfs函数查看磁盘空间

来源:互联网 发布:大非农数据影响什么 编辑:程序博客网 时间:2024/06/11 09:48

linux下C编程--利用statfs函数查看磁盘空间

前两天工作有需求,需要查询一个路径的总空间大小和可用空间大小,结果就查到了这个函数,测试程序如下:

test.c

[cpp] view plaincopy
  1. #include <sys/statfs.h>  
  2. #include <stdio.h>  
  3.   
  4. int main()  
  5. {  
  6.     struct statfs diskInfo;  
  7.       
  8.     statfs("/home/carl/", &diskInfo);  
  9.     unsigned long long blocksize = diskInfo.f_bsize;    //每个block里包含的字节数  
  10.     unsigned long long totalsize = blocksize * diskInfo.f_blocks;   //总的字节数,f_blocks为block的数目  
  11.     printf("Total_size = %llu B = %llu KB = %llu MB = %llu GB\n",   
  12.         totalsize, totalsize>>10, totalsize>>20, totalsize>>30);  
  13.       
  14.     unsigned long long freeDisk = diskInfo.f_bfree * blocksize; //剩余空间的大小  
  15.     unsigned long long availableDisk = diskInfo.f_bavail * blocksize;   //可用空间大小  
  16.     printf("Disk_free = %llu MB = %llu GB\nDisk_available = %llu MB = %llu GB\n",   
  17.         freeDisk>>20, freeDisk>>30, availableDisk>>20, availableDisk>>30);  
  18.       
  19.     return 0;  
  20. }  


编译过程,运行结果,与df命令对比结果如下:

[cpp] view plaincopy
  1. carl@carl-VirtualBox:~/share$ gcc test.c -o test_statfs  
  2. carl@carl-VirtualBox:~/share$ ./test_statfs   
  3. Total_size = 20332810240 B = 19856260 KB = 19390 MB = 18 GB  
  4. Disk_free = 15492 MB = 15 GB  
  5. Disk_available = 14519 MB = 14 GB  
  6. carl@carl-VirtualBox:~/share$ df /home/carl -h  
  7. Filesystem      Size  Used Avail Use% Mounted on  
  8. /dev/sda1        19G  3.9G   15G  22% /  
  9. carl@carl-VirtualBox:~/share$  


转自:http://blog.csdn.net/ghjk014/article/details/11778175
0 0
原创粉丝点击