epoll相關函式

2021-05-26 15:04:17 字數 1339 閱讀 2204

int epoll_create(int size)

int epoll_ctl( int epfd,    int op,    int fd,    struct epoll_event *event )

//由 epoll_create 生成的epoll專用的檔案描述符

//要進行的操作例如註冊事件,可能的取值epoll_ctl_add 註冊、epoll_ctl_mod 修//改、epoll_ctl_del 刪除

//關聯的檔案描述符

//指向epoll_event的指標

int epoll_wait( int epfd,    struct epoll_event * events,    int maxevents,    int timeout )

//由epoll_create 生成的epoll專用的檔案描述符

//用於回傳代處理事件的陣列

//每次能處理的事件數

//等待i/o事件發生的超時值

//為0的時候表示馬上返回,為-1的時候表示一直等下去,直到有事件

//為任意正整數的時候表示等這麼長的時間,如果一直沒有事件

//一般如果網路主迴圈是單獨的執行緒的話,可以用-1來等,這樣可以

//保證一些效率

//如果是和主邏輯在同乙個執行緒的話,則可以用0來保證主迴圈的效率

typedef union epoll_data epoll_data_t;

struct epoll_event {

__uint32_t events;      /* epoll events */

epoll_data_t data;      /* user data variable */

結構體epoll_event 被用於註冊所感興趣的事件和回傳所發生待處理的事件.

其中epoll_data 聯合體用來儲存觸發事件的某個檔案描述符相關的資料.

例如乙個client連線到伺服器,伺服器通過呼叫accept函式可以得到於這個client對

應的socket檔案描述符,可以把這檔案描述符賦給epoll_data的fd欄位以便後面的讀

寫操作在這個檔案描述符上進行。epoll_event 結構體的events欄位是表示感興趣的

事件和被觸發的事件可能的取值為:

epollin :表示對應的檔案描述符可以讀;

epollout:表示對應的檔案描述符可以寫;

epollpri:表示對應的檔案描述符有緊急的資料可讀

epollerr:表示對應的檔案描述符發生錯誤;

epollhup:表示對應的檔案描述符被結束通話;

epollet:表示對應的檔案描述符有事件發生;

Linux事件觸發 epoll相關函式

在linux的網路程式設計中,很長的時間都在使用select來做事件觸發。在linux新的核心中,有了一種替換它的機制,就是epoll。相比於select,epoll最大的好處在於它不會隨著監聽fd數目的增長而降低效率。因為在核心中的select實現中,它是採用輪詢來處理的,輪詢的fd數目越多,自然...

IO復用 epoll函式

由於poll 和select 的侷限,2.6核心以上引用了event poll機制 就是說的epoll 雖然比前2個實現複雜得多,epoll解決了它們共有的基本效能問題,並增加了新的特性。poll 和select 每次呼叫的時候,都需要所有被監聽的檔案的描述符。核心必須遍歷所有被監視的檔案描述符。當...

linux下的epoll函式

epoll是tcp ip網路程式設計的io服用方法之中一種優於select的函式,相比select,它有兩個優點 1.無需編寫以監視狀態變化為目的的針對所有檔案描述符的迴圈語句。2.呼叫對應於select函式的epoll wait函式時無需每次傳遞監視物件資訊。下面介紹epoll伺服器端實現中需要的...