2011-01-31 26 views
2

私はLinuxでepollの周りを頭で覆そうとしています。
正常な動作があるように思わ:epoll_fdは、通常のファイルディスクリプタのようです与えられ、私は3つのepollの機能のほかに、それを行うことができ、他のファイル操作がありますepollファイル記述子操作

// Create the epoll_fd 
int epoll_fd = epoll_create(10); 

... 

// Add file descriptors to it 
struct epoll_event ev = {0}; 
ev.events |= EPOLLIN; 
ev.data.ptr = ...; 

/* for brevity, I don't do error checking here */ 
epoll_ctl(epoll_fd, EPOLL_CTL_ADD, some_fd, &ev); 

... 

// Wait for IO events 
struct epoll_event events[10]; 
int num_events = epoll_wait(epoll_fd, events, 10, -1); 

// Now handle the events 
... 

私の質問はこれです電話? man pageから

+3

あなたが使用する前に、 '*なぜあなたはそれを使用している*あなたのあなたがpoll(2)することができます。それは完全に非標準的でポータブルではなく、人々がそれを使用する大部分の大部分において測定可能な利益はありません。開いているファイルの制限を1024から50000以上に増やした場合を除き、すべてのことが、あなたのコードを理由なしに移植性のないものにしています。 –

答えて

2

Q3は、自身のfdファイルディスクリプタ 世論調査/ファイルディスクリプタ/選択可能ですか?

A3はい。

+0

はい、それはどうしますか?たとえば、そのファイル記述子を介してselect()を読んでいるのですか?それを読むとどうなりますか? –

+0

epoll_waitのときと同じことが多かれ少なかれ、複数のepollfdsで同時に行うことができる点を除きます。しかし、おそらくスレッドごとに1つのepoll FDしか必要ではないでしょう。 – cdleonard

2

あなたが本当に自分自身に尋ねるべきepoll` epoll_fd自体:)

関連する問題