網絡編程(四) EPOLL

 

epoll的優點在於可以支持大量的文件描述符

 


 

epoll相關的系統調用:

 

int epoll_create(int size);

 

參數size的含義我至今沒搞懂,如果大家有誰準確的知道的話請一定要留言!

 

 


 

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

epoll_wait在每一幀中都會別檢查指定的epfd上發生的事件,並且返回到events中,另外事件數量nev作爲返回值返回。

事件(部分)有:

EPOLLIN 可讀事件

EPOLLOUT 可寫事件

EPOLLRDHUP 對端關閉了套接字或者是關閉了寫通道(close(fd)或shutdown(fd, SHUT_WR))。

EPOLLPRI 有緊急數據可讀。

EPOLLERR 當文件描述符發生錯誤的時候,這個epoll總是會幫你設置好這個事件,所以你不需要再設置。

 

timeout的單位是毫秒。

 

需要注意的是epoll_wait會受到信號的干擾。


 

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

epoll_wait的控制碼:

EPOLL_CTL_ADD:將文件描述符綁定到epfd。

EPOLL_CTL_DEL:解除epfd和文件描述符之間的綁定。

EPOLL_CTL_MOD:修改某個文件關心的事件。

 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章