【问题标题】:QProcess not reading result from commandQProcess没有从命令中读取结果
【发布时间】: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 的第二个命令会输出预期的结果。我想知道什么会导致这样的问题?而且我已经确保通过直接输入它们都可以工作的命令。

谢谢!

【问题讨论】:

  • 你说的有点奇怪,我确实有办法。

标签: qt qprocess


【解决方案1】:

我已经遇到过这个问题,尝试连接QProcess::readyReadStandardOutputQProcess::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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多