Это не может быть легко сделано в C ++.
Вам необходимо обработать сигнал .Обработчик должен сообщить программе о событии.Программа должна отреагировать, аккуратно завершив работу (чаще всего это происходит путем генерирования исключения; естественно, ваша программа должна обеспечить безопасность исключений, чтобы это работало).
Проблема заключается в последовательности информирования и реагирования.Нет хорошего способа сделать это.Согласно стандарту, only , что разрешено делать обработчику сигналов, - это установить глобальную переменную типа sig_atomic_t
и return.Следовательно, программа должна периодически проверять значение этой переменной и реагировать на изменение ее значения.
Некоторые операционные системы могут разрешать больше вещей, которые безопасно делать в обработчике исключений.Однако создание исключения C ++ обычно не является одной из таких вещей.Сигналы имеют асинхронный характер.Если он доставляется, когда объект находится в середине конструкции, создание исключения может привести к тому, что его состояние будет непоследовательным.
Так что единственный способ - вставить чеки в программу или, если она имеет централизованный ввод-вывод или цикл обработки событий, вставить туда чек.