QProcess: exitCode () не возвращает% errorlevel% - PullRequest
2 голосов
/ 02 мая 2011

Я пытаюсь поймать определенные коды ошибок из приложения командной строки Windows, запущенного как QProcess.

У меня была ошибка сегодня, когда приложение перестало работать: При запуске в командной строке: echo% errorleve% возвращает 14001 (ERROR_SXS_CANT_GEN_ACTCTX), что является правильной ошибкой.

В моем приложении Qt, хотя, когда я вызываю exitCode () в QProcess, который вызывает это приложение, я получаю 0 в качестве возвращаемого значения.

Есть ли способ получить правильный уровень ошибки этого процесса? Я ожидаю, что упускаю что-то простое.

например:

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

1 Ответ

3 голосов
/ 02 мая 2011

QProcess :: start не блокируется, пока процесс не запустится или даже не завершится. Таким образом, когда вы вызываете exitCode () сразу, он не будет действительным, так как процесс еще даже не начался. Вы можете подключиться к сигналам finish () и error () (неблокирующая альтернатива, рекомендованная в приложении пользовательского интерфейса), чтобы получить код выхода, или вызвать waitForStarted () и / или waitForFinished () (блоки, полезные во вторичных не- Потоки пользовательского интерфейса или в программах CLI), а затем exitCode ().

...