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

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

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

4

Решение

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector