linux下读取系统内存的demo
#include <stdio.h> #define KIBIBYTE_SIZE 1024LL
#define MEBIBYTE_SIZE 1048576LL
#define GIBIBYTE_SIZE 1073741824LL
#define TEBIBYTE_SIZE 1099511627776LL typedef enum {
DIGIT_UNIT_BYTE,
DIGIT_UNIT_KIBIBYTE,
DIGIT_UNIT_MEBIBYTE,
DIGIT_UNIT_GIBIBYTE,
DIGIT_UNIT_TEBIBYTE
} DigitUnit; static char*
find_suffix (const char* str)
{
while (str[0] != 0 && (isdigit (str[0]) || strchr(",.-", str[0]) || isspace (str[0])))
str++;
return (char *) str;
} static char*
find_digit (const char* str)
{
while (str[0] != 0 && (!isdigit (str[0])))
str++;
return (char *) str;
} static DigitUnit
parse_unit_suffix (const char* suffix)
{
if (strlen (suffix) > 0) {
switch (tolower (suffix[0])) {
case 'b': return DIGIT_UNIT_BYTE;
case 'k': return DIGIT_UNIT_KIBIBYTE;
case 'm': return DIGIT_UNIT_MEBIBYTE;
case 'g': return DIGIT_UNIT_GIBIBYTE;
case 't': return DIGIT_UNIT_TEBIBYTE;
}
} return -1;
} long long unit_size (DigitUnit unit)
{
switch (unit) {
case DIGIT_UNIT_BYTE:
return 1;
case DIGIT_UNIT_KIBIBYTE:
return KIBIBYTE_SIZE;
case DIGIT_UNIT_MEBIBYTE:
return MEBIBYTE_SIZE;
case DIGIT_UNIT_GIBIBYTE:
return GIBIBYTE_SIZE;
case DIGIT_UNIT_TEBIBYTE:
return TEBIBYTE_SIZE;
}
} typedef struct {
long long total;
long long used;
} MemInfo; int
meminfo (MemInfo *meminfo)
{
char line[128];
FILE* fp;
long long totalmem;
long long usedmem;
char *digit;
char *suffix; totalmem = 0;
usedmem = 0;
digit = 0;
suffix = 0; memset (line, 0, 128);
fp = fopen ("/proc/meminfo", "rb");
if (fp < 0) {
return -1;
} fgets (line, 128, fp); digit = find_digit (line);
suffix = find_suffix (digit); if (sscanf (digit, "%d", &totalmem) == 1) {
meminfo->total = totalmem * unit_size(parse_unit_suffix(suffix));
} fgets (line, 128, fp); digit = find_digit (line);
suffix = find_suffix (digit); if (sscanf (digit, "%d", &usedmem) == 1) {
meminfo->used = usedmem * unit_size(parse_unit_suffix(suffix));
} return 0;
} int main()
{
MemInfo mem;
meminfo (&mem); printf ("total:%lld used:%lld\n", mem.total, mem.used); return 0;
}
linux下读取系统内存的demo的更多相关文章
- linux 下查看系统内存使用情况的方法
在Windows系统中查看内存的使用情况很简单,想必大家都已经耳熟能详了,那么在linux系统如何查看内存使用情况呢?下面和大家分享在Linux 下查看内存使用情况的free命令: [root@scs ...
- Linux c读取系统内存使用信息
系统的内存使用信息能够在虚拟文件系统/proc/meminfo中找到,如图 所以只要打开/proc/meminfo文件,然后从中读取信息就好了 #include <stdio.h>#inc ...
- Linux 下增大tomcat内存
我的服务器的配置: # OS specific support. $var _must_ be set to either true or false. JAVA_OPTS="-Xms10 ...
- [转帖]linux下CPU、内存、IO、网络的压力测试,硬盘读写速度测试,Linux三个系统资源监控工具
linux下CPU.内存.IO.网络的压力测试,硬盘读写速度测试,Linux三个系统资源监控工具 https://blog.51cto.com/hao360/1587165 linux_python关 ...
- Linux下获得系统时间的C语言实现
Linux下获得系统时间的C语言的实现方法 #include<time.h> //C语言的头文件#include<stdio.h> //C语言的I/O int main() ...
- (转)Linux下tomcat JVM内存设置步骤
java.lang.OutOfMemoryError: PermGen space java.lang.OutOfMemoryError: Java heap space -------------- ...
- linux 下 取进程占用内存(MEM)最高的前10个进程
# linux 下 取进程占用 cpu 最高的前10个进程ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head # linux 下 取进程占用内存 ...
- linux下查看系统属性
inux下查看系统属性1.查看cpu信息查看所有cpu信息:cat /proc/cpuinfo查看cpu类型: grep "model name" /proc/cpuinfo2.查 ...
- Linux下修改tomcat内存
由于服务器上放的tomcat太多,造成内存溢出. 常见的内存溢出有以下两种: java.lang.OutOfMemoryError: PermGen space java.lang.OutOfMemo ...
随机推荐
- utf8_unicode_ci与utf8_general_ci
下面摘录一下Mysql 5.1中文手册中关于utf8_unicode_ci与utf8_general_ci的说明: 当前,utf8_unicode_ci校对规则仅部分支持Unicode校对规则算法.一 ...
- [Unity Shader]Shader前述
什么是Shader Shader,也就是着色器,它的工作就是读取你的网格并渲染在屏幕上.Shader可以定义一些属性,你会用它来影响渲染模型时所显示的效果.当存储了这些属性的设置时,就是一个Mat ...
- 关于CH340在STM32实现一键下载电路的研究(转)
源:关于CH340在STM32实现一键下载电路的研究 在做基于STM32的多功能MP3播放器的课题时,在程序下载这部分时借鉴了正点原子开发板上的一键下载电路,采用CH340G这款芯片设计. 在画PCB ...
- CodeForces 652B z-sort
先对序列排个序. 例如:1 2 3 4 5 6 7 我们把序列分成两半,前一半是1 2 3 4,后一半是5 6 7 然后,我们从前一半取最小的一个,再从后一半取最小的一个..一直操作下去就能构造出答案 ...
- MyBatis 3 中使用存储过程
转:http://zachary-guo.iteye.com/blog/1756689 Mybats 是 iBatis 被 Google 收购后重新命名的一个工程,当然也做了大量的升级.iBatis ...
- MYsql数据库ERROR总结
描述:#Warning: Using a password on the command line interface can be insecure.#ERROR 1045 (28000): Acc ...
- node.js 下依赖Express 实现post 4种方式提交参数
上面这个图好有意思啊,哈哈, v8威武啊.... 在2014年的最后一天和大家分享关于node.js 如何提交4种格式的post数据. 上上一篇说到了关于http协议里定义的4种常见数据的post方法 ...
- Leetcode 181. Employees Earning More Than Their Managers
The Employee table holds all employees including their managers. Every employee has an Id, and there ...
- Ubuntu安装飞鸽传输
飞鸽传书下载地址 http://www.ipmsg.org.cn/ipmsg/download.html 下载以后解压压缩包,会有一个可执行文件,executable文件. ./Qipmsg 如果没报 ...
- DOMContentLoaded
setTimeout(function(){ alert("settimeout"); },0); EventUtil.addHandler(window, "DOMCo ...