Ich habe einen Destruktor, der aufgerufen werden muss, auch wenn das Programm nicht ordnungsgemäß beendet wird, um sicherzustellen, dass ein externer Prozess abstirbt.Funktion beim Beenden oder Programmende ausführen
Zur Zeit habe ich den destructor registriert durch
std::atexit(killprocess);
std::at_quick_exit(killprocess);
jedoch aufgerufen werden, bedeutet dies, dass, wenn das Programm beendet ist, aber nicht beendet der Prozess nicht getötet wird. Gibt es eine Möglichkeit, sicherzustellen, dass entweder der Kill-Prozess oder der Destruktor entweder beim Beenden aufgerufen wird oder wenn das Programm beendet, aber nicht beendet wird?
Edit: Der beendete, aber nicht abgeschlossene Status stammt vom Visual Studio, der am Ende eine Wartebedingung hinzufügt. Ich glaube, das bedeutet, dass nach dem registrierten Killprocess mit atexit der Prozess Destruktor natürlich nicht von diesem Punkt in der Ausführung aufgerufen wird
Was meinen Sie mit "fertig, aber nicht beendet"? Meinst du die Zeit zwischen "Main" Returns und dem Prozess tatsächlich endet? –
Call KillProcess als die letzte Zeile in Main –
Wenn ich die Frage richtig verstehe [Std :: at_exit] (http://en.cppreference.com/w/cpp/utility/program/atexit) ist tatsächlich tun, was Sie wollen: 'Registriert die Funktion, auf die func zeigt, um bei normalem Programmabbruch aufgerufen zu werden (über std :: exit() oder von der Hauptfunktion zurück)'. –