日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux读取每条内存使用,Linux c读取系统内存使用信息

發布時間:2024/10/8 linux 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux读取每条内存使用,Linux c读取系统内存使用信息 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

系統的內存使用信息能夠在虛擬文件系統/proc/meminfo中找到,如圖

所以只要打開/proc/meminfo文件,然后從中讀取信息就好了

#include

#include

#include

#include

#include

#define MEM_PART "/proc/meminfo"

//用于存儲內存信息的結構體

struct mem_info

{

char MemTotal[20];

char MemFree[20];

char MemAvailable[20];

char Buffers[20];

char Cached[20];

};

typedef struct mem_info MEM_info,*pMEM_info;

//打開fileName指定的文件,從中讀取第lineNumber行

//返回值:成功返回1,失敗返回0

int get_file_line(char *result,char *fileName,int lineNumber)

{

FILE *filePointer;

int i=0;

char buffer[FILEBUFFER_LENGTH];

if((fileName==NULL)||(result==NULL))

{

return 0;

}

if(!(filePointer=fopen(fileName,"rb")))

{return 0;}

while((!feof(filePointer))&&(i

{

if(!fgets(buffer,FILEBUFFER_LENGTH,filePointer))

{

return 0;

}

i++;//差點又忘記加這一句了

}

/* printf("\n%d\n",sizeof(*result));

if(strlen(buffer)>sizeof(*result))//不能夠這么寫,雖然fgets讀取一行后會在末尾加上‘\0‘,但是sizeof(result)得到的結果卻是result本身類型的大小,所以不能夠這么算。當靜態數組傳入函數時,在函數內部只能知道它是一個指針

{

return 0;

}*/

strcpy(result,buffer);

if(0!=fclose(filePointer))

{

return 0;

}

return 1;

}

//按行讀取/proc/meminfo中的信息,并保存到mem結構體中

int get_mem_info(pMEM_info mem)

{

char buffer[300];

if(NULL==mem)

{

printf("\nget_mem_info:param null!\n");

return 0;

}

memset(mem,0,sizeof(MEM_info));

if(1==get_file_line(buffer,MEM_PART,1))//讀取第一行

{

sscanf(buffer,"%*s %s",mem->MemTotal);

if(1==get_file_line(buffer,MEM_PART,2))//讀取第二行

{?? sscanf(buffer,"%*s %s",mem->MemFree);

if(1==get_file_line(buffer,MEM_PART,3))//讀取第三行

{?? sscanf(buffer,"%*s %s",mem->MemAvailable);

if(1==get_file_line(buffer,MEM_PART,4))//讀取第四行

{?? sscanf(buffer,"%*s %s",mem->Buffers);

if(1==get_file_line(buffer,MEM_PART,5))//讀取第五行

{

sscanf(buffer,"%*s %s",mem->Cached);

return 1;

}

}

}

}

}

return 0;

}

int main()

{

MEM_info mem;

get_mem_info(&mem);

printf("\n%s %s %s %s %s\n",mem.MemTotal,mem.MemFree,mem.MemAvailable,mem.Buffers,mem.Cached);

return 1;

}

原文:http://www.cnblogs.com/thegodofthunder/p/7216923.html

總結

以上是生活随笔為你收集整理的linux读取每条内存使用,Linux c读取系统内存使用信息的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。