我正在尝试从作为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());
}
答案 0 :(得分:3)
QProcess :: start在进程开始甚至终止之前不会阻塞。因此,当您立即调用exitCode()时,它将无效,因为该进程尚未启动。 您可以连接到finished()和error()信号(在UI应用程序中推荐的非阻塞替代方案)来获取exitcode,或者调用waitForStarted()和/或waitForFinished()(块,在辅助非UI线程或CLI程序)然后exitCode()。