需求
使用 QProcess
调用 ping
, 并输出结果到文件,或者实时输出显示。
解决
调用进程
std::shared_ptr<QProcess> process_ = nullptr;
process_ = std::make_shared<QProcess>(this);
process_->start("ping www.baidu.com");
if (process_ != nullptr) {
//process_->close();
process_->kill();
process_->waitForFinished();
process_ = nullptr;
}
close()
可以直接关闭子进程kill()
用于向子进程发送SIGKILL
, 然后通过waitForFinished()
来等待子进程退出。
输出到文件
在 start()
之前:
process_->setStandardOutputFile("out.txt");
实时输出显示
在 start()
之前:
process_->setReadChannel(QProcess::StandardOutput);
connect(process_.get(), &QProcess::readyRead, [=](){
qDebug() << process_->readAllStandardOutput();
});
记得使用 closeReadChannel()
来关闭读取通道。