使用 QProcess 时无法读取命令的输出

Posted

技术标签:

【中文标题】使用 QProcess 时无法读取命令的输出【英文标题】:Can't read the output of the command when using QProcess 【发布时间】:2021-03-19 08:13:09 【问题描述】:

我的程序需要发送一个带有 QProcess 的命令行并检索结果,然后将显示在 GUI 中。 我要执行并读取其输出的命令是ostree remote refs kinoite 这是我的代码:

    QProcess* process = new QProcess();

    connect(process,&QProcess::readyReadStandardError,[process]() 
        qWarning()<<"Error: " << process->readAllStandardError();
    );
    
    //catch data output
    connect(process,&QProcess::readyReadStandardOutput,[process]() 
            qWarning()<<"Output: " << process->readAllStandardOutput();
    );

    // delete process instance when done, and get the exit status to handle errors.
    QObject::connect(process, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished),
                     [=](int exitCode, QProcess::ExitStatus exitStatus)
        qWarning()<< "process exited with code " << exitCode;
        process->deleteLater();
    );

    process->setWorkingDirectory(QStringLiteral("~"));
    process->start(QStringLiteral("ostree"), QStringLiteral("remote"), QStringLiteral("refs"), QStringLiteral("kinoite"));

没有收到信号,所以使用qWarning()时终端什么也没有显示 请提供任何帮助。 谢谢

【问题讨论】:

【参考方案1】:

问题不在于 QProcess,而是因为在工具箱中运行 QProcess。

【讨论】:

以上是关于使用 QProcess 时无法读取命令的输出的主要内容,如果未能解决你的问题,请参考以下文章

调用一个系统命令,并读取它的输出值(使用QProcess.readAll)

使用 QProcess 读取标准输出

QProcess 执行 python3 脚本无法正常工作

QProcess -> 在 Linux 上从 sftp 读取标准输出

如何将 qprocess 带到最前面?

使用包含空格的参数调用 Qpr​​ocess - Windows