Некоторое время я работал с libevent2, но обычно я использовал его для обработки сетевого ввода-вывода (с использованием сокетов). Теперь мне нужно прочитать много разных файлов, поэтому я тоже хотел его использовать. Я создал этот код:
int file = open(filename, O_RDONLY);
struct event *ev_file_read = event_new(ev_base, file, EV_READ | EV_PERSIST, read_file, NULL);
if(event_add(ev_file_read, NULL))
error("adding file event");
К сожалению, это не работает. Я получаю это сообщение при попытке добавить событие:
[предупреждение] Ошибка Epoll ADD (1) на fd 7. Старых событий было 0; прочитанное изменение было 1 (добавить); изменение записи было 0 (нет): операция не разрешена событие добавления файла: операция не разрешена
Файл существует и имеет права на чтение / запись.
Кто-нибудь знает, как обрабатывать файловый ввод-вывод с помощью libevent? Я думал также о буферных событиях, но в API есть только функция bufferevent_socket_new (), которая здесь не применяется.
Заранее спасибо.