epoll系列系統呼叫

2021-07-05 07:32:45 字數 828 閱讀 3555

需要包含的標頭檔案#include

1. int epoll_create(int size):

在核心新建乙個事件表(這是與select和poll不同的地方),返回這個事件表的檔案描述符,這個檔案描述符將會作為epoll系統呼叫的第乙個引數。另外size引數並不起

作用,只是給核心乙個提示,它的事件表需要多大。

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

fd是要操作的檔案描述符,

op是操作的型別:

epoll_ctl_add往事件表(epfd)上新增fd上的事件。

epoll_ctl_mod修改

epoll_ctl_del刪除

event就是指事件,

struct epoll_event

typedef union epoll_data

epoll_data_t;

epoll_ctl成功返回0,失敗返回-1。

3.int epoll_wait(int epfd, struct epoll_event* events,int maxevents,int timeout):

timeout為-1時,一直阻塞到有事件發生,為0時立即返回;

events是呼叫者建立用來接收存放發生事件的;

maxevents則是最多監聽多少個事件,它必須大於0。

epoll_event event;

epolloneshot:

保證同一時刻乙個socket只有乙個執行緒在處理,當這個執行緒處理完成後需要重置這個事件,進而讓其他工作執行緒有機會處理這個socket。

IO復用 epoll系列系統呼叫

1 核心事件表 epoll是linux特有的i o復用函式。epoll把使用者關心的檔案描述上的事件放在核心裡的乙個事件表中,並用乙個額外的檔案描述符來標識該核心事件表。這個額外檔案描述符使用函式epoll create函式來建立。includeint epoll create int size s...

epoll系統呼叫

1 include 2 int epoll create int size 建立乙個epfd,標識核心中的事件表 3int epoll ctl int epfd,int op,int fd,struct epoll event event 向epfd中新增,刪除,修改事件 4int epoll wa...

linux下epoll系統呼叫實現I O復用

epoll系統呼叫 穿件核心事件表,返回指向被建立表的檔案描述符 作為其它epoll函式的第乙個引數 include int epoll create int size epoll ctl實現對核心事件表的操作 int epoll ctl int epfd,int op,int fd,struct ...