【发布时间】:2019-11-08 20:04:55
【问题描述】:
如果子系统具有事件处理能力,那么在 Unix/Linux 世界中通常会向该子系统添加 API 调用以允许公开文件描述符,以便可以将所述事件处理集成到使用某些东西的现有主循环中比如 poll() 或 select()。例如,在 Wayland 中,有 wl_display_get_fd()。如果该 FD 显示活动,则可以调用 wl_display_read_events() 和朋友。
如果该子系统内部只有一个 FD,这将很简单。但是如果有多个 FD 需要监视事件怎么办?
我只看到两个解决方案:
- 公开所有 FD。但是,我不知道有任何 API 可以做到这一点。
- 公开某种“虚拟”FD,它以某种方式与内部“真实”FD 耦合。一旦真正的 FD 接收到数据并被标记为可读,那么虚拟 FD 也是如此。一旦可以写入真实的 FD,虚拟 FD 就会自动标记为可写等。
#2 对我来说听起来更干净。有可能这样做吗?还是有更好的方法来解决这个问题?
【问题讨论】:
标签: linux unix event-handling file-descriptor