Как правило, в обработчике сигналов желательно ничего не делать; кроме как установить флаг.
Затем, когда управление возвращается в ваш главный цикл, вы можете проверить этот флаг, выйти из цикла, закрыть сокеты, запустить деструкторы на ваших объектах и т. Д. И выйти чисто.
Обработчики сигналов могут вызываться практически в любое время, в том числе в середине вызовов библиотеки C или C ++, что может быть проблемой.