しばらく libevent2 を使用していましたが、通常はネットワーク I/O (ソケットを使用) を処理するために使用していました。現在、さまざまなファイルを読み取る必要があるため、それも使用したいと考えていました。私はこのコードを作成しました:
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");
残念ながら、うまくいきません。イベントを追加しようとすると、次のメッセージが表示されます。
[警告] fd 7 での Epoll ADD(1) が失敗しました。古いイベントは 0 でした。read change は 1 (追加) でした。write change was 0 (なし): 操作は許可されていません adding file イベント: 操作は許可されていません
ファイルが存在し、読み取り/書き込み権限があります。
libevent を使用してファイル IO を処理する方法を知っている人はいますか? bufferred イベントについても考えましたが、API には、ここでは適用されない関数 bufferevent_socket_new() しかありません。
前もって感謝します。