Qt|Linux工作笔记-异步调用ping命令,重定向获取信息,界面显示
逻辑:
1.使用QProcess在开线程前设置输出文件【setStandardOutputFile】;
2.开一个线程,去专门调用shell命令,比如ping;
3.Qt读取重定向文件,进行界面显示;
程序运行截图如下:
源码如下:
widget.h
QT_BEGIN_NAMESPACE
class QProcess;
class QTimer;
QT_END_NAMESPACEnamespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();void removeExistFile(const QString fileName);void getTopInformation(const QString cmd, const QString fileName);protected slots:void readTopInfo();void pingBtnClicked();private:Ui::Widget *ui;QProcess *m_process;QTimer *m_readTime;QString m_outputFileName;
};#endif // WIDGET_H
main.cpp
clude <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QProcess>
#include <QEventLoop>
#include <QTimer>
#include <QDebug>
#include <QFile>Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);m_outputFileName = "ping.txt";removeExistFile(m_outputFileName);this->setWindowTitle("CSDN IT1995");m_process = new QProcess;connect(ui->pushButton, SIGNAL(clicked(bool)), this, SLOT(pingBtnClicked()));
}Widget::~Widget()
{delete ui;
}void Widget::removeExistFile(const QString fileName)
{if(QFile::exists(fileName)){if(QFile::remove(fileName)){qDebug() << fileName + " is discovered! remove successful";}else{qDebug() << fileName + " remove failed";}return;}qDebug() << fileName + "is undiscovered!";
}void Widget::getTopInformation(const QString cmd, const QString fileName)
{m_process->setStandardOutputFile(fileName);m_process->start(cmd);QEventLoop loop;m_readTime = new QTimer;connect(m_readTime, SIGNAL(timeout()), this, SLOT(readTopInfo()));connect(m_process, SIGNAL(finished(int,QProcess::ExitStatus)), &loop, SLOT(quit()));m_readTime->start(500);loop.exec();
}void Widget::readTopInfo()
{QFile file("ping.txt");if(!file.open(QIODevice::ReadOnly | QIODevice::Text)){qDebug() << "open failed!";return;}QTextStream in(&file);QString pingFileInfo = in.readAll();QStringList lineList = pingFileInfo.split("\n");ui->listWidget->clear();for(int i = 0; i < lineList.size(); i++){ui->listWidget->insertItem(i, lineList[i]);}
}void Widget::pingBtnClicked()
{QString ipOrUrl = ui->lineEdit->text();QString cmd = "ping " + ipOrUrl;ui->pushButton->setEnabled(false);getTopInformation(cmd, "ping.txt");
}
Qt|Linux工作笔记-异步调用ping命令,重定向获取信息,界面显示相关推荐
- Qt|Linux工作笔记-第二种方式读取Linux中top命令(直接读取,非重定向)
第一种方式的链接如下: https://mp.csdn.net/postedit/84067805 第一种方式是重定向到文件,然后读取, 第二种方式不重定向到文件,直接读取! 利用QProcess的特 ...
- java调用shell命令并获取执行结果
java调用shell命令并获取执行结果 使用到Process和Runtime两个类,返回值通过Process类的getInputStream()方法获取 [plain] view plain cop ...
- [Linux]工作中常用的Unix命令
Linux命令工作实际笔记 一.查看磁盘文件大小: du [-abcDhHklmsSx] [-L <符号连接>][-X <文件>][--block-size][--exclud ...
- python调用ping命令_我可以创建一个脚本来测试是否可以在python服务器上远程使用SSH和PING命令吗? - python...
我可以创建脚本来测试是否可以在python中远程使用服务器上的SSH和PING命令吗? 参考方案 好的,这是Python3和Linux的示例.只需记住,您的目标主机/服务器必须正在运行SSH服务器才能 ...
- Linux工作笔记037---Centos下Linux创建用户_用户组_删除用户
JAVA技术交流QQ群:170933152 这里主要是生成环境的机器中病毒了,病毒会自动创建一个免密登录的账户,所以才查了查,这个... 唉,平时用内网,后来用云服务器,云服务器,有些厂商是提供安全框 ...
- linux请求超时 ping_linux下ping命令使用详解
•ping命令一般用于检测网络通与不通,也叫时延,其值越大,速度越慢PING(PacketInternetGrope),因特网包探索器,用于测试网络连接量的程序. •ping发送一个ICMP回声请求消 ...
- c#调用ping命令
using System.Net.NetworkInformation; 异步调用: private void button1_Click(object sender, EventArgs e){Pi ...
- 停止linux下正在执行的ping命令
CTRL+c或CTRL+z方式退出 也可以设置选项方式,使得ping命令执行若干次包就终止.ping 192.168.34.44 -c 4,此时ping命令将执行4次
- python调用ping命令_Windows 中通过Python实现ping命令加时间戳
由于ping命令在ping的时候无法加入时间,不能够直观分析结果.便想在ping的时候加入时间戳. 1.首先需要系统配置了Python的环境,我的环境如下,这里就不介绍环境搭建步骤. 2.以下是代码展 ...
最新文章
- LeetCode 17. Letter Combinations of a Phone Number
- MYSQL基础----集合函数(count,sun,avg,max,min)
- LUA 利用#遍历表的问题
- Qt::WA_OpaquePaintEvent理解
- 定制或外购适配器规格需求列表
- 网络编程-TCP/IP协议栈-IP协议
- 谈话《百度搜索引擎的网页质量白皮书》
- bash脚本编程之条件判断、条件测试
- java.util.ConcurrentModificationException的解决办法
- worder字体网页字体对照表
- Java练习——小游戏 模拟雷电
- mysql的auto_increment详解
- 微信公众上传头像和分享
- 线段树(segment tree),看这一篇就够了
- 对话哈佛大学教授Lukin:量子计算将在我们有生之年普及! | AI英雄
- 当前比较流行的页面布局方式
- Git -- submoudule子模块使用
- 北京图王软件开发有限公司产品介绍-Visual Graph专业图形引擎
- MathType编辑公式时如何输入空格
- 《从0开始学产品策划》第一期:认清项目本质