QProcess:exitCode()似乎没有返回%errorlevel%

时间:2011-05-02 18:41:26

标签: qt qprocess errorlevel

我正在尝试从作为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());
}

1 个答案:

答案 0 :(得分:3)

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