源**例如以下:
#include
#include
#include
#include
//檔案系統資訊結構體
struct filesystem_info;
/*獲取檔案系統資訊*/
int get_filesystem_info(const
char *filesystem_name, struct filesystem_info *fi);
/*block to kbyte*/
static
unsigned
long kscale(unsigned
long m_block, unsigned
long m_kbyte);
/*convert size to gb mb kb*/
static
char *convert_size(float m_size, char *dest);
int main()
/*獲取檔案系統資訊*/
int get_filesystem_info(const
char *filesystem_name,struct filesystem_info *fi)
switch(buf.f_type)
bzero(&fi->filesystem_total_capacity,sizeof(fi->filesystem_total_capacity));
bzero(&fi->filesystem_free_capacity,sizeof(fi->filesystem_free_capacity));
printf("blocks %ld\n",buf.f_blocks);
printf("bfree %ld\n",buf.f_bfree);
printf("bsize %ld\n",buf.f_bsize);
filesystem_total_size =
(float)(kscale(buf.f_blocks, buf.f_bsize));
filesystem_free_size =
(float)(kscale(buf.f_bfree, buf.f_bsize));
printf("total %f\n",filesystem_total_size);
printf("free %f\n",filesystem_free_size);
convert_size(filesystem_total_size,fi->filesystem_total_capacity);
convert_size(filesystem_free_size,fi->filesystem_free_capacity);
bzero(fi->filesystem_permissions,sizeof(fi->filesystem_permissions));
sprintf(fi->filesystem_permissions,"rw");
return0;}
/*block to kbyte*/
static
unsigned
long kscale(unsigned
long m_block, unsigned
long m_kbyte)
/*convert size to gb mb kb*/
static
char *convert_size(float m_size, char *dest)
else
if((m_size / 1024.0) >= 1.0)
else
return dest;
}
總結:
1、關於 struct statfs 結構體資訊參考:
2、對於filesystem_total_size 使用float 型別。是為了準確度更高。buysbox 中的 fdisk 源**使用的是整型相除,約為4舍五入。
3、kscale 函式中 使用 unsigned long long 型別 是由於 m_block 與 m_byte 原本是long 型,相乘的結果超出了 long 型別的能夠表示資料位。
獲取檔案系統資訊
獲取檔案系統資訊 file類包含下列靜態屬性提供檔案系統資訊 file.lineending 行結束符,這取決於具體作業系統。file.separator 路徑分隔符,在mac os中是 在windows中是 capabilities類也包含一些和檔案有關的系統資訊 file.systemchars...
linux磁碟 檔案系統
計算機儲存和組織資料的方法或者機制。軟體 磁碟是物理介質 磁粒子物理元素。硬體需要軟體驅動使用。檔案系統實現通過磁碟管理規劃 儲存資料。windows ntfs fat32 msdos linux ext2 ext3 c5 ext4 c6 xfs centos7 8 btrfs 在虛擬機器建立乙個磁...
Linux磁碟和檔案系統
linux一般使用fdisk來分割槽,fdisk基本支援所有的作業系統。fdisk是基於mbr的分割槽工具,如果使用gpt分割槽的話是不能使用fdisk的。fdisk l可以列出所有安裝的磁碟及其分割槽資訊 cat proc partitions可以檢視分割槽資訊,proc儲存系統的實時資訊 fdi...