使用QProcess
启动ipconfig会导致崩溃,并显示错误对话框
运行时错误!
C:\的Windows \ Syswow64资料\ IPCONFIG.EXE
R6016
- 没有足够的空间用于线程数据
在某些计算机上(问题发生的地方并非如此),请参阅image。
我是否错误地使用了QProcess
?
我测试过:
使用:
最小代码:
#include <QApplication>
#include <QWidget>
#include <QTimer>
#include <QProcess>
#include <QRegExp>
#include <QDebug>
QProcess *checkGateway;
void detectGateway() {
//Start ipconfig
QProcess* proc = new QProcess();
QObject::connect(proc, static_cast<void (QProcess::*)(int)>(&QProcess::finished), [proc](int exitStatus) {
Q_UNUSED(exitStatus);
/* parse */
int testAfter = 1000; //1 sec
QRegExp rx("gateway[^\\r\\n]+(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})");
rx.setCaseSensitivity(Qt::CaseInsensitive);
const QString getResp = proc->readAll();
if (rx.indexIn(getResp) > -1) {
qDebug() << "Gateway:" << rx.cap(1);
testAfter = 5000; //5 sec
} else {
qDebug() << "Not found";
}
QTimer::singleShot(testAfter, [](){
detectGateway();
});
/* parse */
});
proc->start("ipconfig");
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget w;
detectGateway();
w.show();
return a.exec();
}