#include <sys/select.h>
int select(int nfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct timeval *timeout);
参数 描述
nfds 监听文件描述符中最大的+1,或者填1024
readfds 读集合
writefds 写集合
exceptfds 异常集合
timeout 定时阻塞监控时间,3种情况

timeout:
1.NULL,永远等下去
2.设置timeval,等待固定时间
3.设置timeval里时间均为0,检查描述字后立即返回,轮询

文件描述符操作函数

函数 描述
void FD_CLR(int fd, fd_set *set); 清0
int FD_ISSET(int fd, fd_set *set); 是否置1
void FD_SET(int fd, fd_set *set); fd位置1
void FD_ZERO(fd_set *set); 所有位清0
//创建一个文件描述符表
fd_st reads,temp;
//初始化
fd_zero(&reads);
//将监听的描述符添加到读集合
fd_set(lfd,&reads);
//内核检测
while(1){temp = reads;int ret = select(maxfd+1,&reads,NULL,NULL,NULL);//是不是鉴定的if(fd_isset(lfd,&temp)){int cfd = accept();//cfd加入读集合fd_set(cfd,&reads);//更新maxfdmaxfd=maxfd<cfd?cfd:maxfd;}//客户端发送数据for(int i = lfd+1;i<=maxfd;++i){if(fd_isset(i,&temp){int len = read();if(len ==0){//cfd 从读集合中删除fd_clr(i, &reads);}write();}}}

select
优点:
跨平台
缺点:
1.select仅支持1024个文件描述符
2.用户空间和内核空间相互拷贝浪费资源
3.遍历也很浪费资源

C语言 select相关推荐

  1. 数据库实验4 SQL语言-SELECT查询操作

    数据库实验4 SQL语言-SELECT查询操作 1.首先按照第三章的jxgl数据库的模板创建jxgl数据库并插入数据: 创建数据库jxgl: create database jxgl; 创建相应的表: ...

  2. 实验二 SQL 语言——SELECT 查询操作(第一部分)

    SQL 语言--SELECT 查询操作 实验目的: -了解查询的概念和方法:-掌握 SQL Server 集成管理器查询子窗口中执行 SELECT 操作的方法:-掌握 SELECT 语句在单表查询中的 ...

  3. linux c语言 select函数用法

    原文地址:点击打开链接 linux c语言 select函数用法 Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如 co ...

  4. go语言 select

    通过select可以监听channel上的数据流动 case语句里必须是一个IO操作 在一个select语句中,Go语言会按顺序从头至尾评估每一个发送和接收的语句 如果case满足,则执行对应语句 如 ...

  5. 【SQL语言——SELECT查询操作】

    基于创建的数据库(包含读者.图书.借阅三张表),试用SQL的查询语句表达下列查询: 1.查询图书表中售价介于50元到70元之间的图书的全部信息 2.查询图书表中全部图书的最高售价.最低售价和平均售价. ...

  6. c语言select函数头文件,简述select函数的功能与调用方法

    使用select 首先我们需要解答一些疑惑.为什么要使用select函数? 比如你有一个服务器程序,维护着N多个TCP连接,你如何去判断这些TCP连接上有数据传送过来了呢?最傻瓜的办法就是隔一定时间去 ...

  7. C语言 select函数使用

    在编程的过程中,经常会遇到许多阻塞的函数,好像read和网络编程时使用的recv, recvfrom函数都是阻塞的函数,当函数不能成功执行的时候,程序就会一直阻塞在这里,无法执行下面的代码.这是就需要 ...

  8. Java实现C语言select函数_一道面试题目,分别用sql 和java,c++, c语言实现,

    引用来自"雨翔河"的评论 获取国家假日办的的信息,然后根据假日办提供的信息来搞定.日期的话,哈哈,找个提供日期查询的接口,借用一下来查日期,也搞定了.总之哪里有的抄就抄哪里的. 再 ...

  9. SQL Server数据库字符集、版本类型、版本号、所在服务器名、语言SQL语句查询语法演示

    一.数据库版本查看方法 --- 数据库版本 select SERVERPROPERTY(N'edition') 可以看到我的是企业版 二.数据库字符集查看方法 --- 数据库字符集 select SE ...

最新文章

  1. 开启报名 | SMP-图神经网络在线研讨会2020
  2. 使用SQL语句UPDATE数据,怎样知道是否UPDATE成功
  3. MVC模式下My97DatePicker日期控件引用注意事项
  4. Bentley Descartes V8i安装教程
  5. html表格右键可编辑,Bootstrap table右键功能实现方法
  6. STL中的map集合扩展字段比较方便
  7. 图解分布式架构的发展和演进 | 技术头条
  8. 模型优化在风控中的运用(全)
  9. (转):GOF设计模式趣解(23种设计模式)
  10. index.php p=,弃用p值:你准备好了吗?
  11. 《BI那点儿事》Microsoft 决策树算法
  12. 架构案例丨微信Android客户端架构演进之路
  13. 32位电脑ODBC连接
  14. OSChina 周五乱弹 ——电影里有在线/离线,递归,循环,矩阵等概念?
  15. SDL(Simple DirectMedia Layer) 简介
  16. oracle11g exp 00028,解决Linux系统下exp导入EXP-00028异常
  17. 总结开发者在合作过程中的典型交流方式
  18. java ci框架_CI(CodeIgniter)框架介绍
  19. 手写篇:如何手写RPC框架?
  20. 基于SpringBoot的开源免费微信管家

热门文章

  1. ipython下怎么运行py文件_在IPython中执行Python程序文件的示例
  2. 微课|中学生可以这样学Python(2.2.1节):算术运算符
  3. fat+linux权限,Linux 文件和目录权限详细介绍
  4. 如何查看外网ip地址_如何查看本机ip地址?
  5. python购物信息整合教程_python实现简单购物商城
  6. 客户端渲染(CSR)
  7. java rome_Rome使用入门
  8. python 调用控制台_如何使用Python的交互控制台
  9. python爬虫架构设置_Python爬虫进阶三之Scrapy框架安装配置
  10. pg安装部署linux_简简单单基于docker部署微服务网关