man-翻譯和epoll相關的內容,部分

1. int epoll_create(int size); linux

epoll_create 新建了一個epoll的實例,請求內核分配一塊存儲事件結構的空間,size不是後臺存儲的最大尺寸,只是初始化時告訴內核應該分配多大的內部空間。 socket

epoll_create 返回了一個對新的epoll實例引用的文件描述符。這個文件描述符在全部隨後的epoll接口的調用中都會被用到。當不須要的時候,由epoll_create返回的文件描述符,須要用close()函數關閉。當全部對本文件應用的文件描述符都被關閉時,內核將把這個epoll實例破壞掉,並釋放所分配的資源以實現再利用。 函數

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

這個系統調用控制了一個被文件描述符epfd所引用的epoll實例。它在目標文件描述符fd上請求相關的操做op。 對象

有效的op參數以下: 接口

EPOLL_CTL_ADD 在文件描述符epfd所引用的epoll實例裏註冊目標文件描述符fd並把event和fd指向的文件聯繫起來。 事件

EPOLL_CTL_MOD 資源

修改和目標文件描述符fd聯繫起來的event。 it

EPOLL_CTL_DEL io

移除由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)

把相關聯的文件描述符設置單目標

相關文章
相關標籤/搜索