QProcess没有从命令中读取结果
Posted
技术标签:
【中文标题】QProcess没有从命令中读取结果【英文标题】:QProcess not reading result from command 【发布时间】:2020-01-05 14:54:48 【问题描述】:我正在尝试使用 QProcess 在 Qt 中运行一些 llvm 命令:
QProcess* compile = new QProcess();
compile->setWorkingDirectory("/Users/xxx/Documents/");
compile->start("clang-check test.cpp -ast-dump -ast-dump-filter=main --");
// compile->start("clang -Xclang -ast-dump test.cpp");
compile->waitForFinished(-1);
qDebug() << compile->readAll() << endl;
qDebug() << compile->readAllStandardOutput() << endl;
qDebug() << compile->readAllStandardError() << endl;
虽然带有clang-check
的第一个启动命令不会输出任何结果,但带有clang
的第二个命令会输出预期的结果。我想知道什么会导致这样的问题?而且我已经确保通过直接输入它们都可以工作的命令。
谢谢!
【问题讨论】:
你说的有点奇怪,我确实有办法。 【参考方案1】:我已经遇到过这个问题,尝试连接QProcess::readyReadStandardOutput
和QProcess::readyReadStandardError
,而不是处理插槽中的输出:
connect(&compile, &QProcess::readyReadStandardOutput, this, [this]()
qDebug() << "Std output:" << compile->readAllStandardOutput();
);
connect(&compile, &QProcess::readyReadStandardError, this, [this]()
qDebug() << "Err output:" << compile->readAllStandardError();
);
另外,检查进程是否以QProcess::waitForStarted()
正确启动。
旁注:检查可能导致内存泄漏的new QProcess
。
【讨论】:
以上是关于QProcess没有从命令中读取结果的主要内容,如果未能解决你的问题,请参考以下文章
Qt QProcess::finished() 信号没有这样的插槽
QProcess -> 在 Linux 上从 sftp 读取标准输出