调试运行视频
python调试合集
java web 调试 视频合集
调试asp.net 项目相关合集
php 调试 视频合集
客服微信
客户问答
项目定制说明
作品发货方式
定制毕设需要的时间
成品可以修改吗
关于我们
翰文编程 CSDN博客
代做java毕业设计
信誉保证
购买流程
本站介绍
技术介绍
使用数据库
简单的基于地理图片的旅行路线还原
aScript 垃圾回收
Java中的不可变类
servlet 面试题
开发技术
ABO相关软件文件下载
基于Vue的生活废品回收系统的设计和实现
[免费获取]springboot 专升本志愿填报辅..
如何安装jdk
git 创建新项目,下载工程,合并和更新..
技术应用
ARM在adnroid开发应用
关于mysql
fusionCharts做bi展现基础技术
IoC容器类型
Ioc
移动手机软件的特点
J2ME介绍
手机软件现状
论文指导
广播电视大学论文应用指导要求
毕设题目参考二
毕设题目参考一
论文指导目录
开题报告指导
项目报告
论文开题报告格式
论文撰写的几大模块
当前位置:首页 > 查看
 

关于select 函数

 来源:翰文编程 源码设计 定制服务  发布日期: 点击率:

 向来是一个比较懒惰的人,但是突然觉得应该整理一些东西,写写博客什么的。只是不知道从何处开始。昨天在看松本行弘的《代码的未来》中关于C10K问题的分析,其中涉及到了slecet函数。select函数之前只是知道,没怎么了解。然后看了一下,整理如下:

应用场景:

在很多时候,一个进程要处理很多个文件的读写(包括socket文件),然后对于这些文件的访问经常会因为各种原因导致进程被阻塞。为了使进程不被阻塞在单个文件的访问上,可以使用select函数。首先将多个需要访问的文件描述符设置到相关的fd_set,并设置相应的超时时间,然后调用select函数当这些文件中,有文件可用或者超时时间已到后,select函数就会返回。

头文件:

#include <sys/select.h>

函数原型:

 int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);FDj

readfds为读文件描述符集的指针,用于监控哪些文件描述符处于可读状态,writefds为写文件描述符集的指针,exceptfds为异常的文件描述符集的指针,以上三个集合中,对于不需要监视的,可以设置为NULL。fd_set本质上是一个bit 数组。对于根据相应的文件描述符映射至相对应的位置。

timeout为超时时间,如果timeout中对应的秒数和微妙数设置为0,则select不会休眠,立即返回,如果timeout设置为NULL,则会一直休眠,直到有资源处于非阻塞状态(可读、可写或者有异常)。

需要注意的是linux中,每次调用select都会修改timeout值,因此每次调用都要重新设置timeout的值

nfds为readfds、writefds和exceptfds三者中描述符最大值加1.

返回值 为int型。如果为0,则超时返回。如果-1,则有错误,并设置errno,如果大于0,则代表处于可用状态的描述符的数量。

对于fd_set,对应有四个宏,用于进行相关的控制:

FD_ZERO(fd_set *fdset):清空fdset中的所有描述符。
FD_SET(int fd, fd_set *fdset):添加单个描述符至fdset中。
FD_CLR(int fd, fd_set *fdset):清楚fdset中某个描述符。
FD_ISSET(int fd, fd_set *fdset):检查某个描述符是否在fdset中。
值得注意的是:对于调用select返回后,如果想确定某个描述符是否在fdset中,需要使用FD_ISSET判断。由于调用可能会修改,因此每次调用select之前,都应重新设置所要监控的描述符集合

请加微信,客服二维码请咨询购买,同时本程序源码配有系统运行视频 请联系客服索要视频文件


网址:毕设在线毕业设计网 http://www.bisheonline.net

服务范围:定制各类计算机程序设计,vue,jsp ,java 各类框架各类,开发工具 eclipse myeclipse idea vs 等,wap android ssm springboot asp.net php python (爬取,django,flask) vue node.js react ,winform uniapp小程序 等 E-mail:251836457@qq.com

友情链接: 翰文编程 CSDN博客   翰文编程 B站空间   计算机联盟  

翰文编程 源码设计 定制服务 版权所有

辽ICP备12012783


Copyright(C) 毕设在线(bisheonline.net) All Rights Reserved.


客服Q Q:251836457 翰文编程 源码设计 定制服务客服为你服务
360安全网址导航
Baidu