Эполл на обычных файлах - PullRequest
21 голосов
/ 09 ноября 2011

Может ли epoll (в Linux) быть чем-то полезным для обычных файлов?Я знаю, что он в основном используется с розетками, но просто удивляюсь.

Ответы [ 2 ]

17 голосов
/ 09 ноября 2011

Не совсем. epoll имеет смысл только для файловых дескрипторов, которые обычно демонстрируют блокирующее поведение при чтении / записи, таких как каналы и сокеты. Обычные файловые дескрипторы всегда или более или менее немедленно возвращают результат или конец файла, поэтому epoll не сделает для них ничего полезного.

16 голосов
/ 09 ноября 2011

Я думаю, что в 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
...