qt 监听linux下进程的CPU使用率和内存使用率
主要是总结一下网上查找到的资料,代码如下:有两种形式:形式一,利用命令行,然后获得命令行的数据。
形式二,读取linux下的一个环境配置信息文件,里面映射这很多系统信息,例如cpu使用情况,进程情况等等。
代码;
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include"qprocess.h"
#include"QProcess"
#include"string.h"
#include"qdir.h"
#include"ee.h"
#include <QFile>
#include <QTextStream>
#include <QString>
#include <QLabel>
#include <QDateTime>
#include<QTime>
#include<QTimer>
QTimer *testTimer;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
testTimer = new QTimer(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::changeEvent(QEvent *e)
{
QMainWindow::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
void MainWindow::on_pushButton_clicked()
{
//ee *e=new ee();
//long z=e->find_pid_by_name("cpu2");
//QStringList arguments;
//arguments << "-aux" << ">"<<"/test/3.txt";
//QProcess *p = new QProcess(this);
//p->execute("ps -aux > /test/3.txt");
//QString s= p->readAllStandardOutput();
//ui->lineEdit->setText(s);
//QProcess *p = new QProcess(this);
//p->start("ps -aux > /test/3.txt);
//myProcess->start("/ps", arguments);
QObject::connect(testTimer, SIGNAL(timeout()), this, SLOT(timer_Update()));
testTimer->start(1000);
}
void MainWindow::timer_Update()
{
QString check;
bool x=false;
system("ps -aux > /test/3.txt");
QFile file("/test/3.txt");
if (file.open(QIODevice::ReadOnly | QIODevice::WriteOnly))//以读写方式打开文件,若写成
{ //QIODevice::WriteRead占内存较多
QTextStream in(&file);
while (!in.atEnd()) //检测是否读完文件
{
QString line = in.readLine();
ui->lineEdit->setText(line);
x=line.contains("cpu2",Qt::CaseInsensitive);
if(x==true)
{
QString kk;
kk=line.at(16);
kk+=line.at(17);
kk+=line.at(18);
kk+=line.at(19);
ui->label->setText(kk);
ui->lineEdit->setText(line);
break;
}
}}
}
void MainWindow::on_pushButton_2_clicked()
{
testTimer->stop();
}
#include "ui_mainwindow.h"
#include"qprocess.h"
#include"QProcess"
#include"string.h"
#include"qdir.h"
#include"ee.h"
#include <QFile>
#include <QTextStream>
#include <QString>
#include <QLabel>
#include <QDateTime>
#include<QTime>
#include<QTimer>
QTimer *testTimer;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
testTimer = new QTimer(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::changeEvent(QEvent *e)
{
QMainWindow::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
void MainWindow::on_pushButton_clicked()
{
//ee *e=new ee();
//long z=e->find_pid_by_name("cpu2");
//QStringList arguments;
//arguments << "-aux" << ">"<<"/test/3.txt";
//QProcess *p = new QProcess(this);
//p->execute("ps -aux > /test/3.txt");
//QString s= p->readAllStandardOutput();
//ui->lineEdit->setText(s);
//QProcess *p = new QProcess(this);
//p->start("ps -aux > /test/3.txt);
//myProcess->start("/ps", arguments);
QObject::connect(testTimer, SIGNAL(timeout()), this, SLOT(timer_Update()));
testTimer->start(1000);
}
void MainWindow::timer_Update()
{
QString check;
bool x=false;
system("ps -aux > /test/3.txt");
QFile file("/test/3.txt");
if (file.open(QIODevice::ReadOnly | QIODevice::WriteOnly))//以读写方式打开文件,若写成
{ //QIODevice::WriteRead占内存较多
QTextStream in(&file);
while (!in.atEnd()) //检测是否读完文件
{
QString line = in.readLine();
ui->lineEdit->setText(line);
x=line.contains("cpu2",Qt::CaseInsensitive);
if(x==true)
{
QString kk;
kk=line.at(16);
kk+=line.at(17);
kk+=line.at(18);
kk+=line.at(19);
ui->label->setText(kk);
ui->lineEdit->setText(line);
break;
}
}}
}
void MainWindow::on_pushButton_2_clicked()
{
testTimer->stop();
}
------------------------------------------------------------------------------
bjut_樂神
伸手摘星,即使徒劳无功,亦不致满手污泥