由於系統中沒有現成的代碼可以直接獲取某個硬盤的大小,此時可以借助popen,sscanf,fdisk命令共同完成硬盤大小的獲取。
工件原理如下,在Linux中執行fdisk -l命令,獲取硬盤的詳細信息,然後在C程序中通過popen將信息獲取,然後用sscanf將相關信息進行處理,得到硬盤的大小。代碼如下:
int get_system_tf_capacity(double *capacity)
{
if (capacity == NULL)
return -1;
*capacity = 0;
FILE *procpt;
char line[100];
double ma, mi;
char tmp[4][100];
procpt = popen("fdisk -l /dev/mmcblk0", "r");
while (fgets(line, sizeof(line), procpt))
{
if (sscanf(line, "%[^ ] %[^ ] %lf %[^ ] %lf %[^\n ]", tmp[0], tmp[1],
&mi, tmp[2], &ma, tmp[3]) != 6)
continue;
*capacity = ma;
break;
}
pclose(procpt);
return 0;
}
C++ Primer Plus 第6版 中文版 清晰有書簽PDF+源代碼 http://www.linuxidc.com/Linux/2014-05/101227.htm
讀C++ Primer 之構造函數陷阱 http://www.linuxidc.com/Linux/2011-08/40176.htm
讀C++ Primer 之智能指針 http://www.linuxidc.com/Linux/2011-08/40177.htm
讀C++ Primer 之句柄類 http://www.linuxidc.com/Linux/2011-08/40175.htm
將C語言梳理一下,分布在以下10個章節中: