Прежде чем начать, я хочу пояснить, что это не инструмент командной строки, а приложение, которое принимает команды через собственный интерфейс командной строки.Как обрабатывать сигнал ctrl-break в интерфейсе командной строки
Редактировать: Я должен извиниться перед своим объяснением, прежде чем, по-видимому, я не очень хорошо объяснил это. Еще один раз ...
Я создаю приложение командной строки, которое принимает команды от пользователя. У меня есть настройка обработчика сигналов, чтобы поймать сигналы, которые затем устанавливают флаг, который мне нужно прекратить. Проблема, с которой я столкнулась, - это все функции консоли, которые я могу найти, блокирующие, что означает, что я не могу обнаружить, что мне нужно выйти из цикла обработки консоли до тех пор, пока пользователь не нажмет клавишу (или не войдет, в зависимости от функции).
Есть ли какой-то стандартный способ, который я могу выполнять как неблокирующее взаимодействие с консолью, так и элегантный способ структурирования программы, так что если я просто закончу из сигнальной нити, все будет обработано и выпущено правильно (пожалуйста не понимайте этого, я знаю, как это можно сделать, используя блокировку и освобождение ресурсов от сигнальной нити, но это может стать беспорядочным, поэтому я бы предпочел избежать этого)
Надеюсь, это объяснение имеет смысл ...
Примечание: на Windows, нажмите на кнопку закрытия поднимет значи код `SIGBREAK` (ctrl- ломать) – 56ka 2014-08-12 13:35:43