【发布时间】:2018-08-13 15:26:29
【问题描述】:
根据本书The Linux Programming Interface:
与信号驱动 I/O 相比,epoll 提供了许多优势。
我们可以放心地说:
信号驱动的 I/O 实际上已经被 epoll 在 linux 下的实践中弃用了?
【问题讨论】:
-
如果您打算在新应用程序中使用信号驱动 I/O,您可能需要为此提出理由。
-
我认为可以公平地说,信号驱动的 I/O 总是一个可怕且缺乏支持的组合,而 Unix 真的希望你使用 任何其他方法多路复用 I/O,甚至是普通的旧
select。但是,在某些情况下,在某种程度上使用信号是不可避免的(例如,多路复用 wait-for-I/O 和 wait-for-child-process),我不知道 epoll 是否已经解决了所有这些问题,但是如果有的话肯定会很好。 -
让我建议您将问题改写为“如果您不关心可移植性,并且正在充分利用 Linux 特定的 API,例如
epoll、signalfd等,是否有在任何剩余的情况下,您仍然必须使用异步信号处理程序来处理某些事情?”这是一个范围合理、没有意见的问题。
标签: c linux performance io portability