Может epoll_wait () & gt; 1 только с 1 сокетом и 1 событием — EPOLLIN?

Допустим, я epoll_create1 () и интересуюсь только EPOLLIN | ЭПОЛЛЕТ на 1 розетку.

Возможно ли, что я получу epoll_wait ()> 1 (при условии тайм-аута = -1) для этого сокета и событие EPOLLIN?

Или epoll_wait () вернет 1, даже если имеется несколько пакетов (скажем, разнесенных на несколько секунд, чтобы я специально остановил программу в цикле epoll_wait)?

Заранее спасибо.

0

Решение

epoll_wait возвращает количество События, который согласно документации равен «числу дескрипторов файлов, готовых к вводу / выводу». Таким образом, вы не можете получить больше событий, чем количество дескрипторов файлов, которые вы зарегистрировали.

1

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

Согласно этим документам для epoll_wait он должен вернуть количество «готовых» fd. Если вы передадите только один fd, вы не должны получить более 1 назад — это, безусловно, будет ошибка в epoll_wait реализации, и это было уже некоторое время, так что я ожидаю, что это довольно хорошо протестировано (если вы не работаете над совершенно новой архитектурой или бета-версией библиотеки C или чего-то подобного).

Кроме того, время ожидания = 0, а не -1.

1

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