Как прервать epoll_pwait, чтобы поймать сигнал

Я бы написал небольшой тест, который показывает мне разницу между epoll_Wait а также epoll_pwait() перехватывая любой прерванный сигнал. Может ли кто-нибудь предоставить мне небольшой код или любой метод, чтобы найти это?

int epoll_pwait(int epfd, struct epoll_event *events,
int maxevents, int timeout,
const sigset_t *sigmask);

3

Решение

Если вы ищете способ интегрировать обработку сигналов в epoll цикл событий, посмотрите на signalfd(2) справочная страница.

Он даст вам fd, который вы можете добавить в свой набор опросов, чтобы получать уведомления, когда ваш процесс (или поток, если это актуально в вашем случае) получил сигнал.

2

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

epoll_pwait не «ловит сигналы», он позволяет атомарно установить новый сигнал процесса маскировать который активен только во время разговора. Смотрите описание на странице руководства, например, http://linux.die.net/man/2/epoll_wait

Чего вы пытаетесь достичь? если вы будете более конкретны, я мог бы дать вам больше информации.

0

По вопросам рекламы [email protected]