...
return events;
}
该函数的操作就是把 wait对象直接挂到当前进程的信号等待队列signalfd_wqh 中,对比 timerfd 来讲,区别在于 timerfd 的 wait 对象是挂到 timerfd_ctx->wqh 链表中 。(详情参看定时器timerfd原理)
signalfd 与 epoll 的结合
- 当 epoll_ctl 调用 signalfd_poll 时,会把生成的 wait 对象挂到当前进程的信号等待队列 signalfd_wqh 中,其中 wait 的回调函数为ep_poll_callback 。
- 当触发信号时,内核会遍历 signalfd_wqh 上的 wait 对象,然后调用回调函数 ep_poll_callback,在该回调函数中会把触发的事件发送到用户态,然后唤醒由于调用 epoll_wait 而休眠的进程,唤醒后的进程调调用 ead 去取信号 。
推荐阅读
- Linux系统设置文件权限,多用户模式下文件权限管理
- 保温杯的保温原理;保温杯保温原理是什么?
- linux设置默认路由 linux设置默认网关
- 可控硅整流原理……可控硅可以整流吗?
- 铜电镀镀锌与镀锡的优缺点 电镀锡原理
- 防蚊手环驱蚊原理?驱蚊手环有毒吗?驱蚊手环的危害?
- 电子邮件是如何工作的 电子邮件工作原理
- 喷雾器原理及结构 喷雾器原理
- 搅拌摩擦焊接的原理 搅拌摩擦焊接
- 驱蚊手环原理 驱蚊手环怎么使用