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

Linux ------- Linux epoll

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
Linux epoll事件触发1 `+ z* z6 k$ L8 W) }% m. k

; u) b# T; _4 ]5 U. l+ }9 j
5 S, f+ ^7 v$ B; i: c. R/ u! b
一、什么是epoll
3 b$ O, F0 \# N* Q
) r; z2 ~: c5 y. Y* k  o# w! ]
" Q2 w  R. a2 O/ l& O2 l9 T. L
    epoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4) is a new API introduced in Linuxkernel 2.5.44),它几乎具备了之前所说的一切优点,被公认为Linux2.6下性能最好的多路I/O就绪通知方法。
1 x  x3 g" e4 Z9 w" o$ g3 Y* X- r3 q & }6 G' b5 Y2 e
二、epoll的相关系统调用
' \- I9 Z5 t+ a  S4 V# J8 d& |1 l+ K% X3 t; f6 F
) h4 ~/ Z5 ]# T8 c% v4 |
    epoll只有epoll_create,epoll_ctl,epoll_wait 3个系统调用。 1 O) h5 Q) w" o

# ^- \& @4 l7 Q6 [5 h1 \
, c9 }* r- X8 m1 k5 h5 f
1、int epoll_create(int size);6 x9 a4 i& \! e) N) w) I

% _- A- q$ ~$ Z# d( G' k$ C
+ H" u- |! W1 n3 @  O: a: j7 r
    创建一个epoll的句柄。自从linux2.6.8之后,size参数是被忽略的。需要注意的是,当创建好epoll句柄后,它就是会占用一个fd值,在linux下如果查看/proc/进程id/fd/,是能够看到这个fd的,所以在使用完epoll后,必须调用close()关闭,否则可能导致fd被耗尽。- v" R; Q: m5 H* N- h7 v- l/ t. S
4 u. t* E- N1 }# A, `0 B: t
2. int epoll_ctl(int epfd, int op,int fd, struct epoll_event *event);
" f7 {$ _8 Z5 R. G% r" ]( C5 f3 Y0 \# L  d5 x4 A8 ~/ }
$ n* O) K$ U4 F! j0 M4 W6 @" n2 u# F
    epoll的事件注册函数,它不同于select()是在监听事件时告诉内核要监听什么类型的事件,而是在这里先注册要监听的事件类型。
, v  K" v& V) t/ [# k0 y
0 a2 M: w# z& R

2 o! X- C+ h* _- T
游客,如果您要查看本帖隐藏内容请回复
# }3 L  ?+ d8 s5 q' Z. Q

. w/ B  s$ v! F7 y
# H! o9 l8 U+ J

$ v' y/ ~6 [' ?  ^& T2 R) t- T; D/ q5 I2 [+ X2 K$ X! i+ [7 L- y

, P: J/ e+ M' ?# ?& v
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 22:09 , Processed in 0.171875 second(s), 23 queries , Gzip On.

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

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

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