Определить, какой сигнал вызвал EINTR?

Я выполняю цикл epoll, и иногда мой вызов epoll_wait возвращает -1 с errno, установленным в EINTR. Иногда я хочу, чтобы это завершило цикл epoll, как в случае с SIGTERM или SIGINT. Но у меня есть этот код, скомпилированный с флагом -pg, поэтому периодически появляются сигналы SIGPROF (27), которые останавливают мой цикл.

Итак... возможно ли включить сигнум, чтобы я мог определить, когда выходить или продолжать? Я хотел бы избегать всего, что использует глобальное использование для отслеживания самого последнего запущенного сигнала.

1 ответ

Решение

Добавьте обработчики сигналов на SIGTERM и SIGINT. Внутри этих обработчиков вы устанавливаете переменную, которую вы проверяете в основном цикле epoll

Другие вопросы по тегам