Использование kqueue для опроса исключительных условий

Я изменяю приложение, чтобы заменить его использование select() на kqueue. select() позволяет опросить об исключительных условиях:

int select(int nfds,
     fd_set *restrict readfds,
     fd_set *restrict writefds,
     fd_set *restrict errorfds,           <---- this thing here
     struct timeval *restrict timeout
);

После прочтения документации по kqueue, похоже, что сделать это невозможно. Там в EVFILT_READ а также EVFILT_WRITE но ничего подобного EVFILT_ERROR/EVFILT_EXCEPTIONAL, Можно ли провести опрос на исключительные условия, и если да, то как?

1 ответ

В FreeBSD нет такого понятия, как исключительное состояние, чтобы процитировать man 2 select:

Единственное исключительное условие, которое можно обнаружить - это внеполосные данные, полученные в сокете.

Итак, ваш вопрос сводится к тому, "Как я могу обнаружить OOB-данные в сокете с помощью kqueue", на который я, честно говоря, не могу ответить, не проведя каких-либо исследований.

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