Я пишу консольное приложение Windows, которое создает некоторые объекты в основном потоке и запускает их в цикл, выходя только тогда, когда пользователь использует прерывание Ctrl-C.
Теперь я прочитал немного о том, как написать правильный обработчик прерываний в статьях, подобных этой: http://msdn.microsoft.com/en-us/library/ms685049%28VS.85%29.aspx, но я все еще смущен одной вещью. Кажется, что обработчик прерываний оставляет ограниченную область для локальной очистки объекта. Например, если бы у меня был такой обработчик:
BOOL CtrlHandler ( DWORD fdwCtrlType )
... handle Ctrl-C
и моя главная выглядела примерно так:
int main() {
DBClient db;
DataPuller p;
while (true) {
... do stuff until Ctrl-C comes in
}
Даже если я улавливаю Ctrl-C, кажется, что нет способа правильно очистить переменные db и p, не объявляя их глобальными, от чего я обычно держусь подальше.
Есть ли лучший способ сделать это, или я упускаю что-то очевидное? Спасибо.