1

我正在修改一个应用程序,以便用 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。是否可以轮询异常情况,如果可以,如何进行?

4

1 回答 1

0

引用 FreeBSD 上没有异常状态之类的东西man 2 select

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

因此,您的问题归结为“如何使用 kqueue 在套接字上检测 OOB 数据”,说实话,如果不做一些研究,我无法回答。

于 2010-08-03T02:09:24.120 回答