epoll用到的所有函式都是在標頭檔案sys/epoll.h中宣告的,下面簡要說明所用到的資料結構和函式:
所用到的資料結構
typedef union epoll_data
epoll_data_t;
struct epoll_event
;結構體epoll_event 被用於註冊所感興趣的事件和回傳所發生待處理的事件,其中epoll_data 聯合體用來儲存觸發事件的某個檔案描述符相關的資料,例如乙個client連線到伺服器,伺服器通過呼叫accept函式可以得到於這個client對應 的socket檔案描述符,可以把這檔案描述符賦給epoll_data的fd欄位以便後面的讀寫操作在這個檔案描述符上進行。epoll_event 結構體的events欄位是表示感興趣的事件和被觸發的事件可能的取值為:
epollin :表示對應的檔案描述符可以讀;
epollout:表示對應的檔案描述符可以寫;
epollpri:表示對應的檔案描述符有緊急的資料可讀(我不太明白是什麼意思,可能是類似client關閉 socket連線這樣的事件);
epollerr:表示對應的檔案描述符發生錯誤;
epollhup:表示對應的檔案描述符被結束通話;
epollet:表示對應的檔案描述符有事件發生;
所用到的函式:
1、epoll_create函式
函式宣告:int epoll_create(int size)
該函式生成乙個epoll專用的檔案描述符,其中的引數是指定生成描述符的最大範圍(我覺得這個引數和select函式的第乙個引數應該是類似的但是該怎麼設定才好,我也不太清楚)。
2、epoll_ctl函式
函式宣告:int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event)
該函式用於控制某個檔案描述符上的事件,可以註冊事件,修改事件,刪除事件。
引數:epfd:由 epoll_create 生成的epoll專用的檔案描述符;
op:要進行的操作例如註冊事件,可能的取值epoll_ctl_add 註冊、epoll_ctl_mod 修
改、epoll_ctl_del 刪除
fd:關聯的檔案描述符;
event:指向epoll_event的指標;
如果呼叫成功返回0,不成功返回-1
3、epoll_wait函式
函式宣告:int epoll_wait(int epfd,struct epoll_event * events,int maxevents,int timeout)
該函式用於輪詢i/o事件的發生;
引數:epfd:由epoll_create 生成的epoll專用的檔案描述符;
epoll_event:用於回傳代處理事件的陣列;
maxevents:每次能處理的事件數;
timeout:等待i/o事件發生的超時值;
返回發生事件數。
C new 用法說明
int a newint 這句相當於 int a 0 a 是空 int a new int 20 這句的本質是指標指向乙個 int20 的空間 在堆裡 這個與class 類似的。1 new運算子 用於建立物件和呼叫建構函式。這種大家都比較熟悉,沒什麼好說的了。2 new修飾符 在用作修飾符時,new...
SQLSERVER DBCC 用法說明
一 dbcc 幫助類命令 dbcc help 查詢所有的dbcc命令 dbcc help 命令 查詢指定的dbcc命令的語法說明 dbcc useroptions 返回當前連線的活動 設定 的set選項 二 dbcc 檢查驗證類命令 dbcc checkalloc 資料庫名稱 檢查指定資料庫的磁碟空...
linux c setitimer用法說明
在linux c程式設計中,setitimer是乙個比較常用的函式,可用來實現延時和定時的功能。使用時需要引入的標頭檔案 cpp view plain copy include setitimer函式原型 cpp view plain copy intsetitimer intwhich,const...