1 #ifndef UNIX_CATCHER_HPP 2 #define UNIX_CATCHER_HPP 3 4 #if defined(Q_OS_UNIX) 5 #include <QCoreApplication> 6 #include <signal.h> 7 #include <unistd.h> 8 9 /////////////////////////////////////////////////////////////////////////////// catchUnixSignals(const std::vector<int> & quitSignals,const std::vector<int> & ignoreSignals=std::vector<int> ())10void catchUnixSignals(const std::vector<int>& quitSignals, 11 const std::vector<int>& ignoreSignals = std::vector<int>()) { 12 13 auto handler = [](int sig) ->void { 14 printf("\nquit the application (user request signal = %d).\n", sig); 15 QCoreApplication::quit(); 16 }; 17 18 for ( int sig : ignoreSignals ) 19 signal(sig, SIG_IGN); 20 21 for ( int sig : quitSignals ) 22 signal(sig, handler); 23 } 24 /////////////////////////////////////////////////////////////////////////////// 25 26 #endif // Q_OS_UNIX 27 28 #endif // UNIX_CATCHER_HPP 29