Add sigint and sigterm handle

This commit is contained in:
2024-05-08 14:57:54 +02:00
parent 324fc0c8f0
commit c2d5b3bccd
2 changed files with 37 additions and 0 deletions

View File

@@ -5,6 +5,7 @@
#include <QStackedWidget>
#include <QPixmap>
#include <QSettings>
#include <atomic>
#include "HomePage.h"
#include "Homologation.h"
@@ -32,6 +33,10 @@ public:
void turnOnTheWindow();
bool shouldStop() const { return _shouldStop; }
void setShouldStop(bool value) { _shouldStop = value; }
protected slots:
void onHomePressed();
@@ -70,4 +75,6 @@ private:
MyTCPClient* tcpClient;
QSettings* settings;
std::atomic<bool> _shouldStop = false;
};

View File

@@ -2,10 +2,24 @@
#include <QApplication>
#include <QObject>
#include <QThread>
#include <atomic>
#include <csignal>
#include "MainWindow.h"
MainWindow* mainWindowPtr = nullptr;
void signalHandler(int signum) {
if(mainWindowPtr != nullptr){
mainWindowPtr->setShouldStop(true);
}
}
int main(int argc, char* argv[]) {
signal(SIGINT, signalHandler);
signal(SIGTERM, signalHandler);
QApplication a(argc, argv);
DisplayMode mode;
@@ -31,6 +45,22 @@ int main(int argc, char* argv[]) {
}
auto* main = new MainWindow("127.0.0.1", port);
mainWindowPtr = main;
try{
main->setDisplayMode(mode);
while(!main->shouldStop()){
usleep(100'000);
}
delete main;
}
catch(const std::exception& e){
std::cerr << e.what() << std::endl;
delete main;
return 1;
}
main->setDisplayMode(mode);