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

Я портировал некоторый код из 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 Ответ

0 голосов
/ 31 декабря 2011

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

...