1

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のドキュメントを読んだ後、それを行う方法はないようです。/の行に沿って and はありますが、何もEVFILT_READありません。例外的な条件をポーリングすることは可能ですか?可能であれば、その方法は?EVFILT_WRITEEVFILT_ERROREVFILT_EXCEPTIONAL

4

1 に答える 1

0

引用するために、FreeBSDには例外的な状態などというものはありませんman 2 select:

検出可能な唯一の例外的な状態は、ソケットで受信された帯域外データです。

したがって、あなたの質問は「kqueue を使用してソケットで OOB データを検出するにはどうすればよいか」ということになります。正直なところ、調査を行わないと答えられません。

于 2010-08-03T02:09:24.120 に答える