Ich habe ein Programm, das erstellt std::thread
Objekte verwendet, um die Arbeit gleichzeitig auszuführen. Ich rufe das Programm von einem Bash-Skript auf und möchte das Skript stoppen, wenn das Programm nicht mit EXIT_SUCCESS
beendet wird. Ich habe in der folgenden Situation ein eher nicht intuitives Verhalten festgestellt: Einer der Threads löst eine Ausnahme aus (und ruft so std::terminate
auf), was zu einem vollständigen Programmabschluss führt. Der Rückkehrcode des Programms ist jedoch EXIT_SUCCESS
(anstelle eines Fehlercodes, den ich erwarten würde). Warum das?C++ - Programm-Rückgabecode, wenn std :: terminate im Thread aufgerufen wird
Ich weiß, dass die Verwendung von std::thread
in vielen Fällen keine clevere Idee ist und ich plane, zu std::async
(oder ähnlichem) zu wechseln, aber im Moment bin ich an einer schnellen Lösung interessiert.
Es ist Ihr Programm. Sie haben die vollständige Kontrolle über den Exit-Status. – stark
Können Sie MCVE anzeigen? – Jarod42
Es sollte dies tun ('std :: terminate' ruft' std :: abort' auf): _ "Implementierter definierter Status wird an die Host-Umgebung zurückgegeben, der eine nicht erfolgreiche Ausführung anzeigt." _ Wir benötigen [mcve] + Plattform-Details. siehe: http://en.cppreference.com/w/cpp/utility/program/abort –