使用kqueue轮询异常情况

时间:2009-11-13 20:02:32

标签: sockets kqueue

我正在修改一个应用程序,以便用kqueue替换select()的使用。 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_READEVFILT_WRITE,但EVFILT_ERROR / EVFILT_EXCEPTIONAL没有任何内容。是否有可能对异常情况进行轮询,如果是,如何?

1 个答案:

答案 0 :(得分:0)

FreeBSD上没有异常状态,引用man 2 select

  

唯一可检测的异常情况是套接字上收到的带外数据。

所以你的问题可归结为“如何在具有kqueue的套接字上检测OOB数据”,老实说,如果不进行一些研究,我就无法回答。