当前位置: 首页 > news >正文

中国建设部监理工程师查询网站中国核工业二三建设有限公司太平岭项目部

中国建设部监理工程师查询网站,中国核工业二三建设有限公司太平岭项目部,seo免费系统,wordpress表单打印1.poll的接口介绍 poll系统调用和select类似#xff0c;也是在指定时间内轮询一定数量的文件描述符#xff0c;已测试其中是否有就绪者。poll的原型如下#xff1a; # include poll.h int poll(struct pollfd*fds,nfds_t nfds,int timeout); poll系统调用成功返回就… 1.poll的接口介绍         poll系统调用和select类似也是在指定时间内轮询一定数量的文件描述符已测试其中是否有就绪者。poll的原型如下 # include poll.h int poll(struct pollfd*fds,nfds_t nfds,int timeout); poll系统调用成功返回就绪文件描述符的总数超时返回0失败返回-1 nfds参数指定被监听事件集合fds的大小。 timeout参数指定poll的超时值单位是毫秒 timeout 为-1 时 poll 调用将永久 阻塞直到某个事件发生 timeout 为 0 时 poll 调用将立即返回。 fds 参数是一个 struct pollfd 结构类型的数组它指定所有用户感兴趣的文件描述 符上发生的可读、可写和异常等事件。 pollfd 结构体定义如下 struct pollfd {int fd; // 文件描述符short events; // 注册的关注事件类型short revents; // 实际发生的事件类型由内核填充 }; 其中 fd 成员指定文件描述符 events 成员告诉 poll 监听 fd 上的哪些事件类型。 它是一系列事件的按位或 revents 成员则有内核修改通知应用程序 fd 上实际发 生了哪些事件。 事件POLLIN描述数据可读 2.epoll的接口介绍         epoll 是 Linux 特有的 I/O 复用函数。它在实现和使用上与 select、 poll 有很大差异。首 先 epoll 使用一组函数来完成任务而不是单个函数。其次 epoll 把用户关心的文件描述 符上的事件放在内核里的一个事件表中。从而无需像 select 和 poll 那样每次调用都要重复传 入文件描述符或事件集。但 epoll 需要使用一个额外的文件描述符来唯一标识内核中的这 个事件表。 epoll 相关的函数如下 epoll_create()用于床建内核事件表 epoll_ctl()用于操作内核事件表 epoll_wait()用于在一段超时间内等待一组文件描述符上的事件 # include sys/epoll.h int epoll_create(int size); //epoll_create()成功返回内核事件表的文件描述符失败返回-1 //size 参数现在并不起作用只是给内核一个提示告诉它事件表需要多大。 //int epoll_ctl(int epfd,int op,int fd,struct epoll_event*event); epoll_ctl()成功返回 0失败返回-1 //epfd 参数指定要操作的内核事件表的文件描述符 //fd 参数指定要操作的文件描述符 //op 参数指定操作类型EPOLL_CTL_ADD 往内核事件表中注册 fd 上的事件EPOLL_CTL_MOD 修改 fd 上的注册事件EPOLL_CTL_DEL 删除 fd 上的注册事件 //event 参数指定事件它是 epoll_event 结构指针类型 int epoll_wait(int epfd,struct epoll_event*events,int maxevents,int timeout); //epoll_wait()成功返回就绪的文件描述符的个数失败返回-1抄实返回0 //epfd 参数指定要操作的内核事件表的文件描述符 //events 参数是一个用户数组这个数组仅仅在 epoll_wait 返回时保存内核检测到 的所有就绪事件而不像 select 和 poll 的数组参数那样既用于传入用户注册的事 件又用于输出内核检测到的就绪事件。这就极大地提高了应用程序索引就绪文件 描述符的效率。 //maxevents 参数指定用户数组的大小即指定最多监听多少个事件它必须大于 0 //timeout 参数指定超时时间单位为毫秒如果 timeout 为 0则 epoll_wait 会立即 返回如果 timeout 为-1则 epoll_wait 会一直阻塞直到有事件就绪。 2.1 LT和ET模式         epoll对文件描述符有两种操作模式LT模式和ET模式。LT模式是默认工作模式。当epoll内核事件表中注册一个文件描述符上的EPOLLET事件时epoll将以高效的ET模式来操作该文件描述符。         对于LT模式操作的文件描述符当epoll_wait检测到其上有事物发生并将此事通知应用程序后应用程序可以不立即处理该事物。这样当应用程序下一次调用epoll_wait时还会再次向应用程序通告此事件直到该事件被处理。         对于ET模式操作的文件描述符当epoll_wait检测到其上有事件并将此事件通知应用程序后应用程序必须立即处理该事件因为后续的epoll_wait调用将不再向应用程序通知这一事件。所以ET模式在很大程度上降低了同一个epoll事件被重复触发的次数因此效率该与LT模式。 epoll实现tcp服务器代码如下 设置文件为非阻塞模式 void SetNoWait(int fd) {int old_optionfcntl(fd,F_GETFL);int new_optionold_option|O_NONBLOCK;fcntl(fd,F_SETFL,new_option); } 关闭客户端连接 void CloseClient(int epfd, int fd) {close(fd);if (epoll_ctl(epfd, EPOLL_CTL_DEL, fd, NULL) -1){printf(epoll_ctl del error\n);} } 获取一个新的客户端连接如果 flag 为 ET则以 ET 模式处理此客户端   void GetClientLink(int sockfd, int epfd, int flag) {struct sockaddr_in caddr;socklen_t len sizeof(caddr);int c accept(sockfd, (struct sockaddr*)caddr, len);if (c 0){printf(Client Link error\n);return;}struct epoll_event ev;ev.data.fd c;if (flag){ev.events EPOLLIN | EPOLLRDHUP | EPOLLET;SetNoWait(c);}else{ev.events EPOLLIN | EPOLLRDHUP;}if (epoll_ctl(epfd, EPOLL_CTL_ADD, c, ev) -1){printf(epoll_ctl add error\n);}} }
http://www.hkea.cn/news/14431597/

相关文章:

  • 娄底网站建设公司策划公司网站建设
  • 张家港做网站优化价格华为软件开发工程师
  • 企业网站的建设原则是什么?360网站seo
  • 用微软雅黑做网站可以吗wordpress 时间代码
  • 建站基础wordpress团购插件
  • 做网站还是做公众号jsp网站开发详解 pdf
  • 建设网站的制作步骤wordpress如何安装模板文件
  • 个人免费展示网站十大网站建设公司
  • 多个网站如何做301全球十大营销策划公司
  • 专业网站建设案例百度收录效果好的网站
  • 选择荣胜网络宁波网站建设小程序制作样式
  • 百度关键词搜索引擎排名优化爱站网seo培训
  • 制作模板网站报价衡阳网站建设公司电话
  • 课工场网站建设培训服装品牌网站怎么做
  • 联想官方服务网站天猫商城入口
  • 悬浮网站右侧带鼠标经过二维码显示特效代码网站备案号 如何添加
  • 网站为什么会被k网站生成软件app制作
  • 免费行情软件app网站mnw下载郑州网站开发公司电话
  • 舟山公司做网站南宁网站建设推广优化
  • 动画制作软件免费seo是什么职位的缩写
  • 湘潭做网站价格问下磐石网络p2p网站建设 上海
  • 手机网站 做成app网站域名备案证明
  • 现在.net做网站的多吗工业设计网站导航
  • 网站建设权利义务专业网站开发联系方式
  • 购物网站开发一般使用什么语言建设一个网站流程图
  • 有些网站勤换域名房地产网站建设分析
  • 免费站推广网站2022建设文化网站好处
  • 在自己电脑上做网站网络营销策划方案格式
  • 北京网站建设公司营销型网站软件
  • 怎样创建网站和网页重庆百度