Epoll на обычных файлах

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

Ответы

Ответ 1

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

Ответ 2

Я думаю, он потерпит неудачу в 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