QProcess не читает результат из команды - PullRequest
0 голосов
/ 05 января 2020

Я пытаюсь запустить некоторые команды llvm в Qt с QProcess:

    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 Ответ

0 голосов
/ 07 января 2020

Я уже сталкивался с этой проблемой, попробуйте подключить 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, который может привести к утечке памяти.

...