epoll代码实现框架:

#define MAX_EVENTS 10

struct epoll_event ev, events[MAX_EVENTS];

int listen_sock, conn_sock, nfds, epollfd;

/* Code to set up listening socket, 'listen_sock',
(socket(), bind(), listen()) omitted */ epollfd = epoll_create1(0);
if (epollfd == -1) {
perror("epoll_create1");
exit(EXIT_FAILURE);
} ev.events = EPOLLIN;
ev.data.fd = listen_sock; if (epoll_ctl(epollfd, EPOLL_CTL_ADD, listen_sock, &ev) == -1) {
perror("epoll_ctl: listen_sock");
exit(EXIT_FAILURE);
} for (;;) {
nfds = epoll_wait(epollfd, events, MAX_EVENTS, -1);
if (nfds == -1) {
perror("epoll_wait");
exit(EXIT_FAILURE);
} for (n = 0; n < nfds; ++n) {
if (events[n].data.fd == listen_sock) {
conn_sock = accept(listen_sock,
(struct sockaddr *) &addr, &addrlen);
if (conn_sock == -1) {
perror("accept");
exit(EXIT_FAILURE);
}
setnonblocking(conn_sock);
ev.events = EPOLLIN | EPOLLET;
ev.data.fd = conn_sock;
if (epoll_ctl(epollfd, EPOLL_CTL_ADD, conn_sock,
&ev) == -1) {
perror("epoll_ctl: conn_sock");
exit(EXIT_FAILURE);
}
} else {
do_use_fd(events[n].data.fd);
}
}
}

最新文章

  1. .NET单元测试的艺术-3.测试代码
  2. ACM/ICPC 之 网络流-拆点构图(POJ2391)
  3. Tomcat 6.0 简介
  4. 嵌入式 hi3518c平台网卡模式MII与RMII模式在Uboot和kernel中切换小结
  5. checkbox组件
  6. python中如何使用help命令?
  7. c++中vector等容器的实现机制
  8. javascript----bug
  9. Android中进程生命周期的优先级
  10. iOS_17_控制开关_TabBarController_由storyboard道路
  11. Java学习笔记9---类静态成员变量的存储位置及JVM的内存划分
  12. hadoop一键安装伪分布式
  13. ng-book札记——Angular工作方式
  14. 盘点 Oracle 11g 中新特性带来的10大性能影响
  15. javaweb开发3.基于Servlet+JSP+JavaBean开发模式的用户登录注册
  16. 漫画 | Spring AOP的底层原理是什么?
  17. HDOJ2025_查找最大元素
  18. video 在移动端播放禁止全屏
  19. IE 出现stack overflow 报错的原因归纳
  20. 微信开发(3):微信公众号发现金红包功能开发,利用第三方SDK实现(转)

热门文章

  1. Cookie、Session、JWT在koa中的应用及实现原理
  2. 文件包含 &amp; LFI-labs靶场
  3. 造轮子系列之RPC 1:如何从零开始开发RPC框架
  4. C语言运算符(位运算符)+(赋值运算符)
  5. 两年Android开发三面上岸腾讯,这些核心知识点建议收藏
  6. Spring Cloud 专题之七:Sleuth 服务跟踪
  7. Shellshock 破壳漏洞 Writeup
  8. netty系列之:netty中的懒人编码解码器
  9. 使用Netcat实现通信和反弹Shell
  10. miniFTP项目实战三