28

(在 Linux 上)可以epoll对常规文件有用吗?我知道它主要与套接字一起使用,但只是想知道。

4

2 回答 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 回答