C语言 select
#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相关推荐
- 数据库实验4 SQL语言-SELECT查询操作
数据库实验4 SQL语言-SELECT查询操作 1.首先按照第三章的jxgl数据库的模板创建jxgl数据库并插入数据: 创建数据库jxgl: create database jxgl; 创建相应的表: ...
- 实验二 SQL 语言——SELECT 查询操作(第一部分)
SQL 语言--SELECT 查询操作 实验目的: -了解查询的概念和方法:-掌握 SQL Server 集成管理器查询子窗口中执行 SELECT 操作的方法:-掌握 SELECT 语句在单表查询中的 ...
- linux c语言 select函数用法
原文地址:点击打开链接 linux c语言 select函数用法 Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如 co ...
- go语言 select
通过select可以监听channel上的数据流动 case语句里必须是一个IO操作 在一个select语句中,Go语言会按顺序从头至尾评估每一个发送和接收的语句 如果case满足,则执行对应语句 如 ...
- 【SQL语言——SELECT查询操作】
基于创建的数据库(包含读者.图书.借阅三张表),试用SQL的查询语句表达下列查询: 1.查询图书表中售价介于50元到70元之间的图书的全部信息 2.查询图书表中全部图书的最高售价.最低售价和平均售价. ...
- c语言select函数头文件,简述select函数的功能与调用方法
使用select 首先我们需要解答一些疑惑.为什么要使用select函数? 比如你有一个服务器程序,维护着N多个TCP连接,你如何去判断这些TCP连接上有数据传送过来了呢?最傻瓜的办法就是隔一定时间去 ...
- C语言 select函数使用
在编程的过程中,经常会遇到许多阻塞的函数,好像read和网络编程时使用的recv, recvfrom函数都是阻塞的函数,当函数不能成功执行的时候,程序就会一直阻塞在这里,无法执行下面的代码.这是就需要 ...
- Java实现C语言select函数_一道面试题目,分别用sql 和java,c++, c语言实现,
引用来自"雨翔河"的评论 获取国家假日办的的信息,然后根据假日办提供的信息来搞定.日期的话,哈哈,找个提供日期查询的接口,借用一下来查日期,也搞定了.总之哪里有的抄就抄哪里的. 再 ...
- SQL Server数据库字符集、版本类型、版本号、所在服务器名、语言SQL语句查询语法演示
一.数据库版本查看方法 --- 数据库版本 select SERVERPROPERTY(N'edition') 可以看到我的是企业版 二.数据库字符集查看方法 --- 数据库字符集 select SE ...
最新文章
- 开启报名 | SMP-图神经网络在线研讨会2020
- 使用SQL语句UPDATE数据,怎样知道是否UPDATE成功
- MVC模式下My97DatePicker日期控件引用注意事项
- Bentley Descartes V8i安装教程
- html表格右键可编辑,Bootstrap table右键功能实现方法
- STL中的map集合扩展字段比较方便
- 图解分布式架构的发展和演进 | 技术头条
- 模型优化在风控中的运用(全)
- (转):GOF设计模式趣解(23种设计模式)
- index.php p=,弃用p值:你准备好了吗?
- 《BI那点儿事》Microsoft 决策树算法
- 架构案例丨微信Android客户端架构演进之路
- 32位电脑ODBC连接
- OSChina 周五乱弹 ——电影里有在线/离线,递归,循环,矩阵等概念?
- SDL(Simple DirectMedia Layer) 简介
- oracle11g exp 00028,解决Linux系统下exp导入EXP-00028异常
- 总结开发者在合作过程中的典型交流方式
- java ci框架_CI(CodeIgniter)框架介绍
- 手写篇:如何手写RPC框架?
- 基于SpringBoot的开源免费微信管家
热门文章
- ipython下怎么运行py文件_在IPython中执行Python程序文件的示例
- 微课|中学生可以这样学Python(2.2.1节):算术运算符
- fat+linux权限,Linux 文件和目录权限详细介绍
- 如何查看外网ip地址_如何查看本机ip地址?
- python购物信息整合教程_python实现简单购物商城
- 客户端渲染(CSR)
- java rome_Rome使用入门
- python 调用控制台_如何使用Python的交互控制台
- python爬虫架构设置_Python爬虫进阶三之Scrapy框架安装配置
- pg安装部署linux_简简单单基于docker部署微服务网关