之前在一家公司做linux嵌入式,有乙個需求就是獲取當前裝置的總記憶體大小以及剩餘記憶體大小。
我們知道我們可以從/proc/meminfo檔案中檢視這兩個資訊大小,執行如下命令:
上面記憶體的資訊量很多,我們並不需要這麼多資訊,我們要的也就其中的一行,為此我們可以再進行一些過濾,再使用下grep命令,執行如下命令,然後就可以得到我們需要的那一行:
其實除了grep命令,我們還可以使用awk命令來過濾,執行如下,也能達到同樣的效果,$1代表第一列,也就是顯示第一列為memtotal的行。
我們得到了我們需要的行,接下來就是從這行分離出來我們需要的那一列,可以接著使用awk命令,我們需要的那個數值是在第2列,可以繼續提取,執行結果如下,就得到了我們想要的那個值:
這裡我們僅僅是用命令獲得了我們想要的資料,如果我們用c語言實現呢?其實也不難,使用
popen函式開啟上述命令,獲得流資料,然後
fread讀取就可以了,**如下:
#include #include #include #include /* 獲取linux系統下記憶體資訊 */
int get_mem_info( const char *name, int index )
'", name, index );
sprintf( tmp, "cat /proc/meminfo | grep %s | awk ''", name, index );
stream = popen( tmp, "r" );
if ( fread( info, 1, sizeof(info), stream ) > 0 )
pclose( stream );
return info_int;
}
int main()
有關awk程式設計可以網上搜下資料,這裡沒有詳細介紹。 Linux下獲取系統資訊
相關函式 include int gethostname char name,size t name include int uname struct utsname name 相關結構 struct utsname 例子int main void printf host name s n comp...
Linux 下使用Sigar 獲取記憶體資訊
和cpu 一樣,sigar中有和記憶體相關的結構體sigar mem t,我們來看一下結構體原型 typedef struct sigar mem t 從中可以看到和結構體相關的資訊還是比較全面的,包括記憶體總量 total 實際記憶體使用量 actual used 實際記憶體剩餘量 actual ...
Linux下檢視記憶體資訊
在linux下檢視記憶體我們一般用free命令 root scs 2 tmp free total used free shared buffers cached mem 3266180 3250004 16176 0 110652 2668236 buffers cache 471116 2795...