Есть ли kqueue()/kevent(), эквивалентный выбору "errorfds" для select ()?

Я портировал некоторый код из select () в kqueue() сегодня, и заметил, что у kevent(), похоже, нет аналога для функции select () "набор исключений".

То есть функция-подпись select () имеет вид:

int select(int nfds, fd_set *restrict readfds, fd_set *restrict writefds, fd_set *restrict errorfds, struct timeval *restrict timeout);

... и с kevent() EVFILT_READ соответствует (readfds), а EVFILT_WRITE соответствует (writefds), но я не вижу ничего похожего на EVFILT_ERROR, который бы соответствовал (errorfds).

Действительно ли просто нет поддержки условий ошибок сокетов в kevent(), или они есть, но реализованы каким-то образом, что мне не очевидно?

1 ответ

Решение

Это невозможно отфильтровать таким образом. Вы должны вручную классифицировать входящие события на основе флагов (EV_EOF) и fflags.

Другие вопросы по тегам