Допустим, я epoll_create1 () и интересуюсь только EPOLLIN | ЭПОЛЛЕТ на 1 розетку.
Возможно ли, что я получу epoll_wait ()> 1 (при условии тайм-аута = -1) для этого сокета и событие EPOLLIN?
Или epoll_wait () вернет 1, даже если имеется несколько пакетов (скажем, разнесенных на несколько секунд, чтобы я специально остановил программу в цикле epoll_wait)?
Заранее спасибо.
epoll_wait
возвращает количество События, который согласно документации равен «числу дескрипторов файлов, готовых к вводу / выводу». Таким образом, вы не можете получить больше событий, чем количество дескрипторов файлов, которые вы зарегистрировали.
Согласно этим документам для epoll_wait
он должен вернуть количество «готовых» fd. Если вы передадите только один fd, вы не должны получить более 1 назад — это, безусловно, будет ошибка в epoll_wait
реализации, и это было уже некоторое время, так что я ожидаю, что это довольно хорошо протестировано (если вы не работаете над совершенно новой архитектурой или бета-версией библиотеки C или чего-то подобного).
Кроме того, время ожидания = 0, а не -1.