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系统内存相关推荐

  1. linux系统内存执行elf的多种方式

    一.前言 无文件(fileless)恶意软件攻击现在已经越来越流行,这一点并不奇怪,因为这种技术通常不会留下蛛丝马迹.本文的重点不是介绍如何在Windows RAM中执行程序,我们的目标是GNU/Li ...

  2. python相关linux_Python实现获取Linux系统基本信息

    Python实现获取Linux系统基本信息,获取信息如下: 主机名 系统版本 系统内核版本 总内存 CPU生厂商 CPU总核心数 服务器生厂商 服务器序列号 各网卡IP,MAC和网卡名信息 实现代码如 ...

  3. 使用Python获取Linux系统的各种信息

    From: http://www.jb51.net/article/52058.htm 这篇文章主要介绍了使用Python获取Linux系统的各种信息,例如系统类型.CPU信息.内存信息.块设备等,需 ...

  4. 707-详解32位Linux系统内存地址映射

    详解32位Linux系统内存地址映射 我们先看一段简单的C程序: 我们先来看一张图: 我们平时所说的x86 32位指的是:80386往后到现在的同一个体系的CPU处理芯片,但是x86这个芯片是从808 ...

  5. Linux系统内存知识总结

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 来源:22j.co/dJ29 Linux 内存是后台开发人员,需要深入了解 ...

  6. widnows监控linux 内存,Linux_带你全面了解Linux系统内存监控,在Windows系统中查看内存的使用 - phpStudy...

    带你全面了解Linux系统内存监控 在Windows系统中查看内存的使用情况很简单,想必大家都已经耳熟能详了,那么在Linux系统如何查看内存使用情况呢?下面和大家分享在Linux系统下查看内存使用情 ...

  7. Linux系统内存不够用怎么办?释放Linux内存的教程

    在Linux下操作频繁时,物理内存会被快速用完,当操作结束后,物理内存没有被正常的释放,而一直当作caching,影响系统的正常运行,今天就来谈谈如何能释放这一部分被占用的内存. 1.打开Linux命 ...

  8. Linux系统内存管理之伙伴系统分析 - 旭东的博客 - 博客园

    Linux系统内存管理之伙伴系统分析 - 旭东的博客 - 博客园 Linux系统内存管理之伙伴系统分析 今天去面试,一位面试官提到了内存管理的伙伴系统,当时就懵了,因为根本就没有听说过.晚上回来在实验 ...

  9. Problem 64 如何设置Linux系统内存回收的阀值?

    Problem 64 如何设置Linux系统内存回收的阀值? Ans: Linux内核的策略是最大程度的利用内存cache 文件系统的数据,提高IO速度,虽然在机制上是有进程需要更大的内存时,会自动释 ...

最新文章

  1. python 判断字母大小写
  2. 利用JDK动态代理机制实现简单拦截器
  3. RedisClient的安装及基本使用
  4. 苹果新的编程语言 Swift 语言进阶(一)--综述
  5. 浮动在IE6,7下的一些问题
  6. 跨平台音频编辑器ocenaudio(十七)
  7. 要看方兴东的博客 只能上Google去找他
  8. [转载] hexo categories和tags页面不显示解决办法
  9. 大气海洋数值模式经验总结
  10. Java项目中 实体类(ENTITY,VO,DTO)理解
  11. OceanBase 数据库
  12. 目前微型计算机的工作原理,微机基本工作原理
  13. coji小机器人_WowWee COJI 可编程机器人玩具——也许是我想多了
  14. 老Java程序员花2天写了个连连看,我竟连不过我女儿,我了个去!
  15. 阿里云建站:企业网站定制/速成美站/响应式功能建站官方购买及优惠详解!
  16. error An unexpected error occurred: “https://registry.npmjs.org/axios
  17. 公务员面试题:领导干部直播带货,你怎么看?
  18. Unreal - Environment Query System(EQS)
  19. matlab实现iou计算,python实现IOU计算案例
  20. 微信小程序-灰度发布

热门文章

  1. 创新创业计划书_创践——大学生创新创业实务 ——如何撰写一份优秀的商业计划书...
  2. 每天一道LeetCode-----计算二叉树的最大路径和,路径只需要从一个节点到达另一个节点,无其他要求
  3. 记录完全分布式开发zookeeper hadoop flume kafka hbase
  4. Pixhawk原生固件以往代码版本的下载
  5. CMake基础 第5节 安装项目
  6. 拷贝构造函数编程实验
  7. c++ primer 5th 练习11.38自己编写答案(用无序容器重写单词计数程序)
  8. C 标准转换运算符const_cast
  9. std::unique_lock与std::lock_guard区别示例
  10. 一分钟带你看懂UML图