А как это можно без boost asio? А то жирновато как-то для такой простой задачи.
https://stackoverflow.com/a/48164204
Как не смотришь, всё криво и косо. Вот есть экземпляр серверного класса в main, а как его загасить красиво?
UPDATE: вопрос про верхний уровень. Низ не интересует. Как пробросить контекст в обработчик, устанавливаемый с std::signal. Чтобы красиво было на C++, а не как всегда (рабочий код):
unique_ptr<StateChecker> myServer;
unique_ptr<thread> server_thread;
// DO NOT WANT GLOBAL VARIABLES!!!
void signal_handler(int signal_num) {
if(myServer!=nullptr) {
myServer->stop(); server_thread.join(); }
exit(signal_num);
}
int main() {
// bla bla
return 0;
}