Linux c读取系统内存使用信息
系统的内存使用信息能够在虚拟文件系统/proc/meminfo中找到,如图

所以只要打开/proc/meminfo文件,然后从中读取信息就好了
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#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<lineNumber))
{
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;
}
Linux c读取系统内存使用信息的更多相关文章
- linux下读取系统内存的demo
#include <stdio.h> #define KIBIBYTE_SIZE 1024LL #define MEBIBYTE_SIZE 1048576LL #define GIBIBY ...
- python获取系统内存占用信息的实例方法
psutil是一个跨平台库(http://code.google.com/p/psutil/),能够轻松实现获取系统运行的进程和系统利用率(包括CPU.内存.磁盘.网络等)信息.它主要应用于系统监控, ...
- linux 下查看系统内存使用情况的方法
在Windows系统中查看内存的使用情况很简单,想必大家都已经耳熟能详了,那么在linux系统如何查看内存使用情况呢?下面和大家分享在Linux 下查看内存使用情况的free命令: [root@scs ...
- 【linux】查看系统内存占用
1.查看内存情况 free -h 解释下基本概念 Mem 内存的使用信息Swap 交换空间的使用信息total 系统总的可用物理内存大小used 已被使用的物理内存大小free 还有多少物理内存可用s ...
- Linux中显示系统中USB信息的lsusb命令
来源:Linux中国 原文:https://linux.cn/article-2448-1.html 通用串行总线(USB)被设计成为连接计算机外设的标准,如键盘.鼠标.打印机.数码相机.便携式媒体 ...
- 关于c# 中读取系统内存大小的问题。
在程序中,调用WMI的时候,出现一个问题,就是我系统有插了两条内存条,共4G.然而自己只能在程序中查到安装内存为2G,感觉有点不淡定.这是之前的代码. static ManagementObjectS ...
- Linux 系统管理命令 - free - 查看系统内存信息
命令详解 重要星级: ★★★★★ 功能说明: free 命令用于显示系统内存状态,具体包括系统物理内存.虚拟内存.共享内存和系统缓存等. 语法格式: free [option] free [选项] 说 ...
- 查看Linux系统内存、CPU、磁盘使用率和详细信息
一.查看内存占用 1.free # free -m 以MB为单位显示内存使用情况 [root@localhost ~]# free -m total used free shared buff/cac ...
- Java获取Linux和Window系统CPU、内存和磁盘总使用率的情况
这是一个工具类,获取的内容: CPU使用率:得到的是当前CPU的使用情况,这是算出的是两次500毫秒时间差的CPU使用率 内存使用率:[1 - 剩余的物理内存/(总的物理内存+虚拟内存) ] * 1 ...
随机推荐
- 深入理解Java虚拟机3-chap4-5-斗之气10段
一.虚拟机性能监控与故障处理 1.JDK的命令行工具:对jdk/lib/tools.jar的薄包装,Linux下可能是Shell编写,执行类似于Linux中的命令 2.可视化工具JConsole 打开 ...
- 关于绕过域名(ip)校验的一些小知识
这篇文章最开始只是想写一个关于绕过referer的方法,写着写着发现和ssrf以及url跳转的一些手法类似,于是把这两种也加上了 对referer做校验一般是对csrf进行防范的手段之一,但是很多时候 ...
- 0005-20180422-自动化第六章-python基础学习笔记
day6 内容回顾: 1. 变量 2. 条件 3. while循环 4. 数据类型 - int - bit_length - bool - True/False - str - upper - low ...
- java.lang.RuntimeException: wrong class format Caused by: org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException: null
Spring Boot 启动的时候报的错 使用Drools 5.6版本,Spring Boot1.5.8版本,JAVA8版本,Eclipse4.4.2版本. Google后在Stack上发现一个,中文 ...
- 记账本微信小程序开发六
记账本微信小程序开发六 我的界面 主界面
- 二进制包安装MYSQL——
yum install libaio -y #安装mysql依赖包tar zxf mysql-5.5.59-linux-glibc2.12-x86_64.tar.gz mv mysql-5.5.59- ...
- Zeu.js
一个生成各种 GIF 动画的 JavaScript 类库,非常适合用于让你的数据展示变得更加地生动.使用起来也非常简单,有数据展示需求的同学可以尝试一下.https://shzlw.github.io ...
- React高级教程(es6)——(1)JSX语法深入理解
从根本上来说,JSX语法提供了一种创建React元素的语法糖,JSX语句可以编译成: React.createElement(component, props, …children)的形式,比如: & ...
- 检测当前运行环境对es6的支持
摘自:http://es6.ruanyifeng.com/#docs/intro 1.查看 node 已经实现的 es6 特性 // Linux & Mac $ node --v8-optio ...
- JDK1.7安装和配置及注意事项
要求 必备知识 windows 7 基本操作. 运行环境 windows 7 下载地址 环境下载 下载JDK 下载地址:http://www.oracle.com/technetwork/java/j ...