逻辑:

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命令,重定向获取信息,界面显示相关推荐

  1. Qt|Linux工作笔记-第二种方式读取Linux中top命令(直接读取,非重定向)

    第一种方式的链接如下: https://mp.csdn.net/postedit/84067805 第一种方式是重定向到文件,然后读取, 第二种方式不重定向到文件,直接读取! 利用QProcess的特 ...

  2. java调用shell命令并获取执行结果

    java调用shell命令并获取执行结果 使用到Process和Runtime两个类,返回值通过Process类的getInputStream()方法获取 [plain] view plain cop ...

  3. [Linux]工作中常用的Unix命令

    Linux命令工作实际笔记 一.查看磁盘文件大小: du [-abcDhHklmsSx] [-L <符号连接>][-X <文件>][--block-size][--exclud ...

  4. python调用ping命令_我可以创建一个脚本来测试是否可以在python服务器上远程使用SSH和PING命令吗? - python...

    我可以创建脚本来测试是否可以在python中远程使用服务器上的SSH和PING命令吗? 参考方案 好的,这是Python3和Linux的示例.只需记住,您的目标主机/服务器必须正在运行SSH服务器才能 ...

  5. Linux工作笔记037---Centos下Linux创建用户_用户组_删除用户

    JAVA技术交流QQ群:170933152 这里主要是生成环境的机器中病毒了,病毒会自动创建一个免密登录的账户,所以才查了查,这个... 唉,平时用内网,后来用云服务器,云服务器,有些厂商是提供安全框 ...

  6. linux请求超时 ping_linux下ping命令使用详解

    •ping命令一般用于检测网络通与不通,也叫时延,其值越大,速度越慢PING(PacketInternetGrope),因特网包探索器,用于测试网络连接量的程序. •ping发送一个ICMP回声请求消 ...

  7. c#调用ping命令

    using System.Net.NetworkInformation; 异步调用: private void button1_Click(object sender, EventArgs e){Pi ...

  8. 停止linux下正在执行的ping命令

    CTRL+c或CTRL+z方式退出 也可以设置选项方式,使得ping命令执行若干次包就终止.ping 192.168.34.44 -c 4,此时ping命令将执行4次

  9. python调用ping命令_Windows 中通过Python实现ping命令加时间戳

    由于ping命令在ping的时候无法加入时间,不能够直观分析结果.便想在ping的时候加入时间戳. 1.首先需要系统配置了Python的环境,我的环境如下,这里就不介绍环境搭建步骤. 2.以下是代码展 ...

最新文章

  1. LeetCode 17. Letter Combinations of a Phone Number
  2. MYSQL基础----集合函数(count,sun,avg,max,min)
  3. LUA 利用#遍历表的问题
  4. Qt::WA_OpaquePaintEvent理解
  5. 定制或外购适配器规格需求列表
  6. 网络编程-TCP/IP协议栈-IP协议
  7. 谈话《百度搜索引擎的网页质量白皮书》
  8. bash脚本编程之条件判断、条件测试
  9. java.util.ConcurrentModificationException的解决办法
  10. worder字体网页字体对照表
  11. Java练习——小游戏 模拟雷电
  12. mysql的auto_increment详解
  13. 微信公众上传头像和分享
  14. 线段树(segment tree),看这一篇就够了
  15. 对话哈佛大学教授Lukin:量子计算将在我们有生之年普及! | AI英雄
  16. 当前比较流行的页面布局方式
  17. Git -- submoudule子模块使用
  18. 北京图王软件开发有限公司产品介绍-Visual Graph专业图形引擎
  19. MathType编辑公式时如何输入空格
  20. 《从0开始学产品策划》第一期:认清项目本质

热门文章

  1. 大公司程序员 VS 小公司程序员 | 差别在哪?
  2. 5招训练你的数据敏感度,数据高手都在用
  3. 史上最全企业数据产品选型对比(含数仓、报表、BI、中台、数据治理)
  4. 影响信息业发展的飞鸽传书2007关键
  5. 飞鸽传书2012软件设计者的角度来看
  6. Windows Storage Server 2003 R2 英文正式版已发布
  7. 对USB驱动程序的理解(1)
  8. 黑客到底可以厉害到什么程度
  9. 经典面试题(8):关于逻辑运算符,下面代码运行的结果是什么?
  10. 风靡全球的儿童编程语言:Scratch