是否有类似于select()的“errorfds”集合的kqueue()/kevent()等价物?

5
今天我在将一些代码从select()转移到kqueue(),发现kevent()似乎没有类似于select()中的“exception-set”功能的对应项。
也就是说,select()的函数签名为:
int select(int nfds, fd_set *restrict readfds, fd_set *restrict writefds, fd_set *restrict errorfds, struct timeval *restrict timeout);

...使用kevent()函数,EVFILT_READ对应(readfds),EVFILT_WRITE对应(writefds),但我没有看到任何类似于EVFILT_ERROR的东西来对应(errorfds)。

在kevent()函数中真的没有支持套接字错误条件的功能吗?还是说它确实存在,但以某种对我不明显的方式实现了?


你需要errorfds做什么?读取错误已经通过读取事件报告,写入错误则通过写入事件(由于结果读取或写入失败)报告。 - Ambroz Bizjak
1个回答

0

无法以那种方式进行过滤。您必须根据标志(EV_EOF)和 fflags 手动分类传入的事件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接