测试用例一: ET模式下,EPOLLOUT事件的触发
测试环境:
CentOS release 6.2 (Final)
事件注册:
epoll_ctl( epfd, connfd, EPOLLIN|EPOLLOUT|EPOLLET )
触发:
telnet 连接后,发送两次消息
测试结果:
epoll_wait wake up events number:1=========================================================================[4]
EPOLLIN
EPOLLOUT
recv msg:[kkkkkkkkk
]
ignore poll out event
all events process complate================================================================================[4]
epoll_wait wake up events number:1=========================================================================[5]
EPOLLIN
EPOLLOUT
recv msg:[k
]
ignore poll out event
all events process complate================================================================================[5]
epoll收到两次事件,每个事件均收到 EPOLLIN和EPOLLOUT,如果socket可写,则该事件会伴随其他事件出现。
epoll的工作模式应该是:当相关的对象(本例为sock)状态发生变化时(比如由可读触发的变化),epoll会报告该对象的所有的监控状态(由可读引发的状态变化,除了报告可读状态外,还会报告可写状态)