找回密码
 注册
关于网站域名变更的通知
查看: 276|回复: 1
打印 上一主题 下一主题

Linux ------- Linux epoll

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-7-31 13:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
Linux epoll事件触发/ }( Q3 [) h9 `) [* N7 [
* }+ J8 ]0 _/ s' m  Y/ E
. d/ A$ \2 U3 n; F  t
一、什么是epoll5 w1 ], a, ?- y5 |% ?- ~1 A

8 l5 x1 U9 `, D. s" @& C
  o& V5 q& x" t/ K. U
    epoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4) is a new API introduced in Linuxkernel 2.5.44),它几乎具备了之前所说的一切优点,被公认为Linux2.6下性能最好的多路I/O就绪通知方法。* t6 ^8 x0 O/ l4 @+ j+ T/ U' P/ [- Z8 m

- ^5 E4 G0 ^' F. ]$ n2 |" h二、epoll的相关系统调用
4 Z2 h9 z. t4 Q. l2 M% L) Q" G2 g
, O  d, b; u' o$ j3 L

# b" h3 r+ R6 e" V3 E' l9 j    epoll只有epoll_create,epoll_ctl,epoll_wait 3个系统调用。 # U, G  B, z% \& C
9 a2 \" k0 ~& d; P" Z% T4 P, w' C

9 O, N( Q0 a. W& G; ^! z* K1、int epoll_create(int size);9 g2 _7 z! p# u6 o  z. I

; T4 m3 y8 A& Y5 [

6 @* `6 P6 R7 X, o9 F    创建一个epoll的句柄。自从linux2.6.8之后,size参数是被忽略的。需要注意的是,当创建好epoll句柄后,它就是会占用一个fd值,在linux下如果查看/proc/进程id/fd/,是能够看到这个fd的,所以在使用完epoll后,必须调用close()关闭,否则可能导致fd被耗尽。
! h+ d0 y- N  d, p- x5 j* D! u
2 D  N; k7 x# b' T* ~2 j" p2. int epoll_ctl(int epfd, int op,int fd, struct epoll_event *event);
  B, ~5 z4 \' W5 r6 K. Z) ?/ _$ s& v  o8 J1 l3 J1 `

/ n9 b) C# m6 H) h5 Z$ |% @    epoll的事件注册函数,它不同于select()是在监听事件时告诉内核要监听什么类型的事件,而是在这里先注册要监听的事件类型。
1 q6 S: T( ]6 u& L! h; G8 b4 l/ [
. G& h% i0 U: Y. p; X
4 K9 D) Y& g. Y& Y
游客,如果您要查看本帖隐藏内容请回复
. p* Q/ C$ O' c
. h) t) ]/ ^# Y$ ^5 F
% _: L0 e0 ~( y/ ^
9 h( M9 L1 `0 B1 O& k& F5 x- F4 Z

1 r/ e1 j0 V( n1 T0 r: s( n* T9 q) `0 ?5 x- t$ D9 L0 y
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-25 00:20 , Processed in 0.156250 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表