man-翻译和epoll相关的内容,部分
2019獨角獸企業重金招聘Python工程師標準>>>
1. int epoll_create(int size);
epoll_create 新建了一個epoll的實例,請求內核分配一塊存儲事件結構的空間,size不是后臺存儲的最大尺寸,只是初始化時告訴內核應該分配多大的內部空間。
epoll_create 返回了一個對新的epoll實例引用的文件描述符。這個文件描述符在所有隨后的epoll接口的調用中都會被用到。當不需要的時候,由epoll_create返回的文件描述符,需要用close()函數關閉。當所有對本文件應用的文件描述符都被關閉時,內核將把這個epoll實例破壞掉,并釋放所分配的資源以實現再利用。
2? int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event)
這個系統調用控制了一個被文件描述符epfd所引用的epoll實例。它在目標文件描述符fd上請求相關的操作op。
有效的op參數如下:
EPOLL_CTL_ADD 在文件描述符epfd所引用的epoll實例里注冊目標文件描述符fd并把event和fd指向的文件聯系起來。
EPOLL_CTL_MOD
修改和目標文件描述符fd聯系起來的event。
EPOLL_CTL_DEL
移除由epfd引用的epoll實例中目標文件描述符fd。
event這個參數描述了連接fd的對象。struct epoll_event是這樣定義的:
typedef union epoll_data{
??? void *ptr;
??? int fd;
??? __uint32_t u32;
??? __uint64_t u64; ??
}epoll_data_t;
struct epoll_event{
??? __uint32_t events;???? /*Epoll events*/
??? epoll_data_t data;??? /*User data variable*/
}
成員變量events有一下幾種類型:
EPOLLIN:
相關的文件對read可用。
EPOLLOUT:
相關的文件對write可用。
EPOLLRDHUP(自版本linux 2.6.17)
socket流結束連接,或者在連接中途中斷。(這個標記在使用邊緣觸發模式ET時查探遠端關閉)
EPOLLPRI read操作緊急數據可用
EPOLLERR 相關聯的文件描述符出錯。epoll_wait不管有沒有在events設置它,這個事件永遠被epoll_wait關注。
EPOLLHUP 相關聯的文件描述符被掛斷。epoll_wait不會忽略這個事件,不管events中有沒有設置它。
EPOLLET 把相關聯的文件描述符設置成邊緣觸發方式。默認的是水平觸發方式。
EPOLLONESHOT (自linux 2.6.2)
把相關聯的文件描述符設置單目標
轉載于:https://my.oschina.net/u/931988/blog/129083
總結
以上是生活随笔為你收集整理的man-翻译和epoll相关的内容,部分的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分析脚本文件AndroidInitPro
- 下一篇: 在IOS XR上配置BFD