日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Qt|Linux工作笔记-异步调用ping命令,重定向获取信息,界面显示

發布時間:2025/3/15 linux 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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命令,重定向获取信息,界面显示的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。