Я работал с 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");
К сожалению, это не работает. Я получаю это сообщение при попытке добавить событие:
[warn] Epoll ADD (1) на fd 7 не удалось. Старые события были 0; изменение чтения было 1 (добавить); изменение записи было 0 (нет): операция не разрешена
событие добавления файла: операция не разрешена
Файл существует и имеет права на чтение / запись. * * 1010
Кто-нибудь имеет представление о том, как обрабатывать ввод-вывод файла с помощью libevent? Я думал также о буферизованных событиях, но в API есть только функция bufferevent_socket_new (), которая здесь не применима.
Заранее спасибо.