Использование 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", на который я, честно говоря, не могу ответить, не проведя каких-либо исследований.