3

同じソケットに対して、2 つのイベントを登録したいと考えています。1 つは EPOLLIN で、もう 1 つは EPOLLOUT|EPOLLET です。

入力の場合はレベルトリガー、出力の場合はエッジトリガーにしたいです。

            ev.data.fd=fd;
            ev.events=EPOLLIN;
            epoll_ctl(epfd,EPOLL_CTL_ADD,fd,&ev);
            ev.events=EPOLLOUT|EPOLLET;
            epoll_ctl(epfd,EPOLL_CTL_ADD,fd,&ev);

それは可能ですか?問題はありますか?ありがとう!

4

1 に答える 1

6

以下は、質問と回答のセクションからのものです。epoll(7)

Q1epollインスタンス に同じファイル記述子を 2 回登録するとどうなりますか?

A1 あなたはおそらく得るでしょうEEXIST。ただし、重複した ( dup(2)dup2(2)fcntl(2) F_DUPFD) 記述子を同じに追加することは可能epoll instanceです。これは、重複するファイル記述子が異なるeventsマスクで登録されている場合に、イベントをフィルター処理するための便利な手法です。

于 2013-05-20T17:35:06.247 に答える