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