当您使用
本次目标是能够触发“用户事件”,以便此基于
我做错了什么吗?还是使用
kqueue()
创建kqueue时,会返回一个文件描述符。但是似乎这个文件描述符不能被select()
有意义地轮询。我知道用kevent(...)
轮询/读取的标准方式,但我正在尝试集成一些使用select()
轮询文件描述符的旧代码。本次目标是能够触发“用户事件”,以便此基于
select
的轮询机制可以检测到它(即使最终需要使用kevent()
“消耗”事件)。这似乎是EVFILT_USER
应该实现的功能,但是快速实验表明,当在kqueue中添加(并触发)事件时,select()
不会报告kqueue的fd已经准备好读取,它只是超时(或永远阻塞)。 (但等效的kevent()
调用确实看到/返回了事件。)我做错了什么吗?还是使用
select()
无法轮询kqueue的fd?