У меня есть обработчик сигнала для SIGABRT, когда сигнал получен, мне нужно еще немного времени для изящного выхода других потоков. Затем я выполню _exit () внутри обработчика сигнала, чтобы завершить весь процесс.
Но я не уверен, как ждать внутри обработчика сигнала. Я думаю, что есть некоторые ограничения на использование сна внутри обработчика сигналов. Я не хочу использовать занятое ожидание.
Кто-нибудь, пожалуйста, подскажите какие-нибудь идеи?
1 ответ
Нет никаких ограничений на то, какой код вы можете выполнять внутри обработчика сигнала. Вы просто должны иметь в виду, что другой сигнал может поступить во время выполнения вашего обработчика сигналов, оставив вас в середине наполовину завершенных функций, заблокированных мьютексов или других вещей, которые лучше не прерывать.
Обычно обработчик сигнала устанавливает флаг, сигнализирующий всем потокам о правильном выходе, возврате из обработчика сигнала и затем корректном завершении вашего кода.
Похожие вопросы
Новые вопросы
c
C - это язык программирования общего назначения, используемый для системного программирования (ОС и встраиваемых), библиотек, игр и кроссплатформенности. Этот тег следует использовать с общими вопросами, касающимися языка C, как это определено в стандарте ISO 9899 (последняя версия 9899: 2018, если не указано иное, а также для запросов, специфичных для версии, с c89, c99, c11 и т. Д.). C отличается от C ++ и не должен сочетаться с тэгом C ++ без разумной причины.