epoll
(在Linux上)能否在常规文件中发挥作用?我知道它主要用于套接字,但我只是想知道。
不完全是这样。 epoll
只对那些在读/写时通常表现出阻塞行为的文件描述符有意义,比如管道和套接字。普通文件描述符通常会立即返回结果或文件结束,因此对它们使用 epoll
没有任何用处。
我认为它将在 epoll_ctl 中以 EPERM
失败:
EPERM The target file fd does not support epoll.
如果文件没有poll()
接口。1373 /* The target file descriptor must support poll */
1374 error = -EPERM;
1375 if (!tfile->f_op || !tfile->f_op->poll)
1376 goto error_tgt_fput;
1377