Qt下操作QProecess示例
void FastbootWidget::bootIMG()
{
QString output;
QProcess fastboot;
fastboot.setProcessChannelMode(QProcess::MergedChannels); //合并通道,将stderr合并输出,让readAll()可读到stderr信息
fastboot.start("\"" + this->sdk + "\"fastboot devices");
fastboot.waitForFinished(); //等待进程完成,阻塞模式
output = fastboot.readAll(); //将输出信息全部读取出来处理
if (output.contains("fastboot"))
{
QProcess *process=new QProcess();
process->setProcessChannelMode(QProcess::MergedChannels);
QString tmp;
QString imgFileName = QFileDialog::getOpenFileName(this, tr("Choose img file..."), ".", tr("IMG File ")+"(*.img)");
if (!imgFileName.isEmpty())
{
process->start("\"" + sdk + "\"fastboot boot " + imgFileName);
process->waitForFinished(-1); //超时时间为 永久等待至进程结束
process->terminate();
}
else
QMessageBox::warning(this, "Error!", "Operation cancelled!", QMessageBox::Ok);
delete process;
}
else
{
this->phone->slotConnectionChanged(FASTBOOT,this->phone->serialNumber);
}
}