我正在修改一个应用,以便用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_READ和EVFILT_WRITE,但没有类似于EVFILT_ERROR/EVFILT_EXCEPTIONAL的东西。是否有可能对异常情况进行轮询,如果可能,如何进行轮询?
发布于 2010-08-03 10:09:24
引用man 2 select的话,FreeBSD上没有异常状态这回事
唯一可以检测到的异常情况是在套接字上接收到的带外数据。
因此,你的问题可以归结为“我如何使用kqueue检测套接字上的OOB数据”,老实说,如果不做一些研究,我无法回答这个问题。
https://stackoverflow.com/questions/1731551
复制相似问题