带有 adb 的 QProcess 输出始终为空
Posted
技术标签:
【中文标题】带有 adb 的 QProcess 输出始终为空【英文标题】:QProcess output with adb always empty 【发布时间】:2019-10-01 23:53:54 【问题描述】:我正在启动一个 QProcess 来获取例如“adb devices”的回归。 没有错误,总是一个空的响应。我在 Windows 的系统环境中有 adb,命令在 cmd 上运行良好。
我做错了什么还是有其他方法可以在 QT 中运行 adb 命令?
class ADBInfo: public QObject
public:
void start()
process = new QProcess( this );
process->start("adb.exe devices");
process->waitForFinished(-1);
qDebug() << "output: " << process->readAll();
qDebug() << "error: " << process->readAllStandardError();
private:
QProcess *process;
;
【问题讨论】:
您没有验证进程是否真正开始。 我认为它没有运行......将devices
移动到进程参数列表
【参考方案1】:
这是正确的方法
QString mainwindow::cmd(const QString &command)
qDebug () << "command = "+command;
QProcess P2;
P2.start(command);
P2.waitForFinished(-1);
P2.setReadChannel(QProcess::StandardOutput);
QTextStream reade2(&P2);
QString line2,line,Out;
while (reade2.readLineInto(&line2))
Out.append(line2 +'\n');
P2.setReadChannel(QProcess::StandardError);
QTextStream reader(&P2);
while (reader.readLineInto(&line))
Out.append(line +'\n');
P2.close();
return Out.trimmed();
当你需要执行命令时
QString Result = cmd("adb devices")
【讨论】:
以上是关于带有 adb 的 QProcess 输出始终为空的主要内容,如果未能解决你的问题,请参考以下文章