(在 Linux 上)可以epoll
对常规文件有用吗?我知道它主要与套接字一起使用,但只是想知道。
问问题
9527 次
2 回答
25
并不真地。epoll
仅对通常会在读/写时表现出阻塞行为的文件描述符有意义,例如管道和套接字。普通文件描述符总是或多或少地立即返回结果或文件结尾,因此epoll
不会对它们做任何有用的事情。
于 2011-11-08T22:27:52.747 回答
19
我认为,它会在 epoll_ctl 与 EPERM失败:
EPERM The target file fd does not support epoll.
如果文件没有poll()
接口。
实际代码是http://lxr.linux.no/#linux+v3.1/fs/eventpoll.c#L1373
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
于 2011-11-08T22:29:36.397 回答