周期获取Linux系统内存
rvolume.h中代码:
1 #ifndef VOLUME_H 2 #define VOLUME_H 3 #include <QtCore/QCoreApplication> 4 #include <QtSql> 5 #include <QTimer> 6 class RVolume : public QObject 7 { 8 Q_OBJECT 9 public: 10 RVolume(int); 11 ~RVolume(); 12 private: 13 char m_cBuff[256]; 14 char m_cName1[20]; 15 char m_cName2[20]; 16 char m_cName3[20]; 17 char m_cUnit[20]; 18 unsigned int m_nMemFree; 19 unsigned int m_nBuffers; 20 unsigned int m_nCached; 21 unsigned int m_nTotalFree; 22 QTimer * counter; 23 QSqlDatabase dbconn; 24 private slots: 25 void getVolume(); 26 }; 27 28 #endif
rvolume.cpp中代码:
1 #include <QtCore/QCoreApplication> 2 #include <QObject> 3 #include <QtSql> 4 #include <QTime> 5 #include <QSqlQuery> 6 #include <QTextCodec> 7 #include "rvolume.h" 8 9 RVolume::RVolume(int m_nTimer) 10 { 11 qDebug() << "The time interval is" <<m_nTimer<<"s."; 12 counter = new QTimer( this ); 13 connect( counter, SIGNAL(timeout()),this, SLOT( getVolume()) ); 14 counter->start((m_nTimer)*1000); 15 16 if(QSqlDatabase::contains("GBond")) 17 { 18 dbconn = QSqlDatabase::database("GBond"); 19 } 20 else 21 { 22 dbconn = QSqlDatabase::addDatabase("QSQLITE", "GBond"); 23 } 24 dbconn.setDatabaseName("/home/Data/Volume.db"); 25 } 26 27 RVolume::~RVolume() 28 { 29 delete counter; 30 } 31 32 void RVolume::getVolume() 33 { 34 FILE *fd; 35 fd = fopen ("/proc/meminfo", "r"); 36 fgets (m_cBuff, sizeof(m_cBuff), fd); 37 fgets (m_cBuff, sizeof(m_cBuff), fd); 38 sscanf (m_cBuff, "%s %u %s", m_cName1, &m_nMemFree,m_cUnit); 39 fgets (m_cBuff, sizeof(m_cBuff), fd); 40 sscanf (m_cBuff, "%s %u %s", m_cName2, &m_nBuffers,m_cUnit); 41 fgets (m_cBuff, sizeof(m_cBuff), fd); 42 sscanf (m_cBuff, "%s %u %s", m_cName3, &m_nCached,m_cUnit); 43 fclose(fd); 44 45 m_nTotalFree=m_nMemFree+m_nBuffers+m_nCached; 46 QDate date; 47 QVariantList itts; 48 itts << date.currentDate () ; 49 50 QTime time; 51 QVariantList imts; 52 imts << time.currentTime () ; 53 54 QVariantList ints; 55 ints << m_nTotalFree; 56 57 if (dbconn.open()) 58 { 59 QSqlQuery query("create table volume(QDate dater,QTime timer,totalFree unsigned int)", dbconn); 60 query.prepare("insert into volume values (?, ?, ?)"); 61 query.addBindValue(itts); 62 query.addBindValue(imts); 63 query.addBindValue(ints); 64 qDebug()<<"\n**** A new information was written into the table.**** "; 65 if (!query.execBatch()) 66 { 67 qDebug() << query.lastError(); 68 } 69 } 70 }
main.cpp中代码:
1 #include <QtCore/QCoreApplication> 2 #include <QTextStream> 3 #include "rvolume.h" 4 5 int main(int argc, char *argv[]) 6 { 7 QCoreApplication a(argc, argv); 8 QTextStream out(stdout); 9 if (argc < 3) 10 { 11 out << "Usage : volume -t time_interval(Unit seconds)" << endl; 12 exit(0); 13 } 14 15 const char *gs_cMark = "-t",*gs_cTime; 16 char *g_cMark_in = argv[1], *g_cTime_in = argv[2]; 17 gs_cTime=g_cTime_in; 18 QString str =gs_cTime; 19 bool ok; 20 int g_nTimer = str. toInt( &ok, 10 ); 21 if ( QString::compare(g_cMark_in,gs_cMark )!=0|| g_nTimer<=0) 22 { 23 out << "The mark or the time interval is invalid! Exit."<< endl ; 24 exit(0); 25 } 26 RVolume memory(g_nTimer); 27 return a.exec(); 28 }
volume.pro中代码:
1 ###################################################################### 2 # Automatically generated by qmake (2.01a) ?? 4? 17 15:00:26 2012 3 ###################################################################### 4 5 TEMPLATE = app 6 QT -= gui 7 QT += sql 8 TARGET = 9 DEPENDPATH += . 10 INCLUDEPATH += . 11 12 # Input 13 HEADERS += rvolume.h 14 SOURCES += main.cpp rvolume.cpp
配置环境变量:vi /etc/profile
在arm中运行结果如下:
转载于:https://www.cnblogs.com/fengye-dream/archive/2012/04/09/2438971.html
周期获取Linux系统内存相关推荐
- linux系统内存执行elf的多种方式
一.前言 无文件(fileless)恶意软件攻击现在已经越来越流行,这一点并不奇怪,因为这种技术通常不会留下蛛丝马迹.本文的重点不是介绍如何在Windows RAM中执行程序,我们的目标是GNU/Li ...
- python相关linux_Python实现获取Linux系统基本信息
Python实现获取Linux系统基本信息,获取信息如下: 主机名 系统版本 系统内核版本 总内存 CPU生厂商 CPU总核心数 服务器生厂商 服务器序列号 各网卡IP,MAC和网卡名信息 实现代码如 ...
- 使用Python获取Linux系统的各种信息
From: http://www.jb51.net/article/52058.htm 这篇文章主要介绍了使用Python获取Linux系统的各种信息,例如系统类型.CPU信息.内存信息.块设备等,需 ...
- 707-详解32位Linux系统内存地址映射
详解32位Linux系统内存地址映射 我们先看一段简单的C程序: 我们先来看一张图: 我们平时所说的x86 32位指的是:80386往后到现在的同一个体系的CPU处理芯片,但是x86这个芯片是从808 ...
- Linux系统内存知识总结
点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 来源:22j.co/dJ29 Linux 内存是后台开发人员,需要深入了解 ...
- widnows监控linux 内存,Linux_带你全面了解Linux系统内存监控,在Windows系统中查看内存的使用 - phpStudy...
带你全面了解Linux系统内存监控 在Windows系统中查看内存的使用情况很简单,想必大家都已经耳熟能详了,那么在Linux系统如何查看内存使用情况呢?下面和大家分享在Linux系统下查看内存使用情 ...
- Linux系统内存不够用怎么办?释放Linux内存的教程
在Linux下操作频繁时,物理内存会被快速用完,当操作结束后,物理内存没有被正常的释放,而一直当作caching,影响系统的正常运行,今天就来谈谈如何能释放这一部分被占用的内存. 1.打开Linux命 ...
- Linux系统内存管理之伙伴系统分析 - 旭东的博客 - 博客园
Linux系统内存管理之伙伴系统分析 - 旭东的博客 - 博客园 Linux系统内存管理之伙伴系统分析 今天去面试,一位面试官提到了内存管理的伙伴系统,当时就懵了,因为根本就没有听说过.晚上回来在实验 ...
- Problem 64 如何设置Linux系统内存回收的阀值?
Problem 64 如何设置Linux系统内存回收的阀值? Ans: Linux内核的策略是最大程度的利用内存cache 文件系统的数据,提高IO速度,虽然在机制上是有进程需要更大的内存时,会自动释 ...
最新文章
- python 判断字母大小写
- 利用JDK动态代理机制实现简单拦截器
- RedisClient的安装及基本使用
- 苹果新的编程语言 Swift 语言进阶(一)--综述
- 浮动在IE6,7下的一些问题
- 跨平台音频编辑器ocenaudio(十七)
- 要看方兴东的博客 只能上Google去找他
- [转载] hexo categories和tags页面不显示解决办法
- 大气海洋数值模式经验总结
- Java项目中 实体类(ENTITY,VO,DTO)理解
- OceanBase 数据库
- 目前微型计算机的工作原理,微机基本工作原理
- coji小机器人_WowWee COJI 可编程机器人玩具——也许是我想多了
- 老Java程序员花2天写了个连连看,我竟连不过我女儿,我了个去!
- 阿里云建站:企业网站定制/速成美站/响应式功能建站官方购买及优惠详解!
- error An unexpected error occurred: “https://registry.npmjs.org/axios
- 公务员面试题:领导干部直播带货,你怎么看?
- Unreal - Environment Query System(EQS)
- matlab实现iou计算,python实现IOU计算案例
- 微信小程序-灰度发布
热门文章
- 创新创业计划书_创践——大学生创新创业实务 ——如何撰写一份优秀的商业计划书...
- 每天一道LeetCode-----计算二叉树的最大路径和,路径只需要从一个节点到达另一个节点,无其他要求
- 记录完全分布式开发zookeeper hadoop flume kafka hbase
- Pixhawk原生固件以往代码版本的下载
- CMake基础 第5节 安装项目
- 拷贝构造函数编程实验
- c++ primer 5th 练习11.38自己编写答案(用无序容器重写单词计数程序)
- C 标准转换运算符const_cast
- std::unique_lock与std::lock_guard区别示例
- 一分钟带你看懂UML图