2 Stimmen

QProcess:exitCode() scheint nicht %errorlevel% zurückzugeben

Ich versuche, bestimmte Fehlercodes von einer Windows-Befehlszeilenanwendung abzufangen, die als QProcess ausgeführt wird.

Ich hatte heute einen Fehler, bei dem die Anwendung fehlschlug: Bei Ausführung in der Befehlszeile: echo %errorleve% gibt 14001 (ERROR_SXS_CANT_GEN_ACTCTX) zurück, was der richtige Fehler ist.

In meiner Qt-Anwendung, wenn ich exitCode() auf dem QProcess aufrufe, der diese Anwendung aufruft, erhalte ich 0 als Rückgabewert.

Gibt es eine Möglichkeit, die korrekte Fehlerstufe dieses Prozesses zu ermitteln? Ich vermute, ich übersehe etwas Einfaches.

ex:

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

3voto

Frank Osterfeld Punkte 24349

QProcess::start blockiert nicht, bis der Prozess startet oder sogar beendet wird. Wenn Sie also exitCode() sofort aufrufen, wird es nicht gültig sein, da der Prozess noch nicht einmal gestartet ist. Sie können sich mit den Signalen finished() und error() verbinden (die nicht-blockierende Alternative, empfohlen in einer UI-Anwendung), um den ExitCode zu erhalten, oder waitForStarted() und/oder waitForFinished() aufrufen (blockiert, nützlich in sekundären Nicht-UI-Threads oder in CLI-Programmen) und dann exitCode().

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X