2

我试图从作为 QProcess 运行的 Windows 命令行应用程序中捕获特定的错误代码。

我今天遇到应用程序失败的错误:在命令行上运行时:echo %errorleve% 返回 14001 (ERROR_SXS_CANT_GEN_ACTCTX),这是正确的错误。

在我的 Qt 应用程序中,当我在调用此应用程序的 QProcess 上调用 exitCode() 时,我得到 0 作为返回值。

有没有办法获得这个过程的正确错误级别?我希望我错过了一些简单的东西。

前任:

proc_->start(bridge_config_.exePath(), args);
if (proc_->state() == QProcess::NotRunning){
    handleProcessFailedToStart(proc_->exitCode());
}
4

1 回答 1

3

QProcess::start 在进程开始甚至终止之前不会阻塞。因此,当您立即调用 exitCode() 时,它将无效,因为该过程甚至还没有开始。您可以连接到 finished() 和 error() 信号(非阻塞替代方案,在 UI 应用程序中推荐)以获取退出代码,或调用 waitForStarted() 和/或 waitForFinished()(阻塞,在辅助非阻塞中很有用) UI 线程或 CLI 程序中),然后 exitCode()。

于 2011-05-02T19:12:36.183 回答