当你创建一个 kqueue 时,kqueue()
你会得到一个文件描述符。但似乎无法使用select()
. 我知道从 a 轮询/读取的标准kqueue()
方法是 withkevent(...)
但我正在尝试与一些使用select()
.
这里的目标是能够触发可以通过这种select
基于轮询机制检测到的“用户事件”(即使该事件最终需要在kevent()
以后使用“消费”)。这看起来像是EVFILT_USER
天生要做的事情,但是一个快速的实验表明,select()
当在 kqueue 中添加(和触发)事件时,不会报告 kqueue 的 fd 已准备好读取,它只是超时(或阻塞永远)。(但等效的kevent()
调用确实看到/返回事件。)
难道我做错了什么?还是不能用 来轮询 kqueue 的 fd select()
?