Действительно ли добавить файловый дескриптор в epoll с событиями, установленными на ноль? - PullRequest
0 голосов
/ 27 февраля 2019

Допустимо ли добавлять файловый дескриптор в epoll с нулевым значением epoll_event.events?Что можно ожидать при вызове epoll_wait?См. Сокращенный пример:

struct epoll_event event = {};
event.data.fd = fd;
event.events = 0;

epoll_ctl(efd, EPOLL_CTL_ADD, fd, &event);
epoll_wait(efd, &event, 1, -1);

На какую семантику я могу положиться при вызове epoll_wait в этом случае?Есть ли какие-либо события, которые все еще доставляются, даже если события = 0?

1 Ответ

0 голосов
/ 27 февраля 2019

Он должен быть действительным, и EPOLLERR и EPOLLHUP всегда включены, даже если вы их не запрашиваете, поэтому настройка events = 0 все равно будет реагировать на эти 2 события.Не забудьте проверить возвращаемое значение epoll_ctl, хотя.

Документация гласит:

Член события представляет собой битовую маску, составленную путем объединения OR ноль или более из следующих доступных типов событий:

EPOLLERR Произошла ошибка в дескрипторе соответствующего файла.Это событие также сообщается для конца записи канала, когда конец чтения был закрыт. epoll_wait (2) всегда будет сообщать об этом событии;необязательно устанавливать его в событиях.

EPOLLHUP Зависание произошло в связанном файловом дескрипторе. epoll_wait (2) всегда будет ждать этого события;нет необходимости устанавливать его в событиях.

...