epoll的核心操作

2022-03-24 03:07:49 字數 1100 閱讀 2946

epoll的核心是下面的函式

epoll_ctl:用於將待監聽的埠和放入(或移除)監聽物件中。這個函式兩個關鍵的輸入為,1、待監聽的介面,2、該介面在io事件發生後,作業系統介面返回給使用者對應這個介面的資料。

將埠加入監聽的

struct epoll_event epv = };

int op;

void *data = malloc(10);

epv.data.ptr = data;

epv.events = epollin|epollet;

op = epoll_ctl_add;

if(epoll_ctl(epollfd, op, watchfd, &epv) < 0)

printf("event add failed[fd=%d]\n", ev->fd);

else

printf("event add ok[fd=%d]\n", ev->fd);

epollfd是epoll的檔案id,op是要進行的操作(此例中為add操作),watchfd是被監聽的埠,epv是和watchfd對應的資訊,其中包括和watchfd進行關聯的指標(data)和監聽的事件(epollin|epollet),在watchfd的檔案描述符的事件觸發後出返回和其對應的epv內容。

epoll_wait:用於進行監聽的

等待事件發生的**

#define max_events 10

int fds ;

struct epoll_event events[max_events];

void    *data

fds = epoll_wait(epollfd, events, max_events, -1);

for (int i = 0; i < fds; i++)

data = events[i].data.ptr;

//後續根據data獲得埠,並進行訊息處理

epoll_wait在events陣列中返回的是使用者使用epoll_ctl在繫結埠時的epoll_event的內容,epoll_wait最多可以返回使用者指定的「max_events」個有事件發生的io檔案描述符

epoll_create:用於建立epoll的函式

epoll技術,及其常用操作

epoll技術的介紹 void addepoll int kdpfd,uint32 t events,void ptr mutex.unlock 備註1 ev的型別為struct epoll event ev kdpfd是epoll的控制代碼。可以man epoll ctl來檢視各個引數及資料結構....

epoll監聽檔案 epoll的使用

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

Linux 2 6 核心Epoll用法舉例說明

epoll用到的所有函式都是在標頭檔案sys epoll.h中宣告的,下面簡要說明所用到的資料結構和函式 所用到的資料結構 typedef union epoll data epoll data t struct epoll event 結構體epoll event 被用於註冊所感興趣的事件和回傳所...