在Linux上,執行man epoll之後,可以得到這些結果
- NAME
- epoll - I/O event notification facility
-
- SYNOPSIS
- #include <sys/epoll.h>
-
- DESCRIPTION
- epoll is a variant of poll(2) that can be used either as Edge or Level Trig-
- gered interface and scales well to large numbers of watched fds. Three system
- calls are provided to set up and control an epoll set: epoll_create(2),
- epoll_ctl(2), epoll_wait(2).
-
- An epoll set is connected to a file descriptor created by epoll_create(2).
- Interest for certain file descriptors is then registered via epoll_ctl(2).
- Finally, the actual wait is started by epoll_wait(2).
epoll相關的的系統調用有:epoll_create, epoll_ctl和epoll_wait。
epoll_create用來創建一個epoll文件描述符。
epoll_ctl用來添加、修改、刪除需要偵聽的文件描述符及其事件。
epoll_wait/epoll_pwait 接收發生在被偵聽的描述符上的,用戶感興趣的IO事件。
這個條件符使用完之後,直接用close關閉即可。另外,任何被偵聽的文件描述拊只要其被關閉,那麼它也會自動的從被偵聽的文件描述符集體中刪除。
一,epoll_create
函數聲明如下: int epoll_create(int maxfds)
參數表示EPOLL所支持的最大句柄數,函數會返回一個新的EPOLL句柄,之後的所有操作將通過這個句柄來進行操作。該 函數生成一個epoll專用的文件描述符,會向內核申請一空間,用來存放你想存眷的socket fd上是否產生以及產生了什麼事務。