Использование kqueue для опроса исключительных условий - PullRequest
1 голос
/ 13 ноября 2009

Я изменяю приложение, чтобы заменить его использование 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 Ответ

0 голосов
/ 03 августа 2010

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

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

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

...