Linux中select函数学习及实例笔记
int select (int maxfdp1,fd_set *readset,fd_set * writeset,fd_set excpetset,const struct timeval *timeout);
2.经过了timeout时长后仍无设备准备好,返回值为0;
3.如果select被某个信号中断,它将返回-1并设置errno为EINTR。
4.如果出错,返回-1并设置相应的errno。
EINTR 此调用被信号所中断
EINVAL 参数n 为负值。
ENOMEM 核心内存不足
中间的三个参数readset writeset和excpetset指定我们要让内核测试读、写、异常条件所需的描述字!函数select使用描述字集,它一般是一个整型的数组,每个数中的每一位代表一个描述符!
#include <sys/select.h>
#include <sys/time.h>
void FD_SET(int fd, fd_set *fdset);
void FD_CLR(int fd, fd_set *fdset);
void FD_ISSET(int fd, fd_set *fdset);
FD_ZERO(&readset);
FD_SET(5, &readset);
FD_SET(33, &readset);
FD_CLR(5, &readset);
则文件描述符集readset对应于文件描述符6的相应位被置为0,如图2所示:
(1) 套接口接收缓冲区中的数据字节数大于等于套接口接收缓冲区低潮限度的当前值。可以通过SO_REVILOAT来设置此低潮限度。
(2)连接的读这一半关闭,也就是接收了FIN的TCP连接,
(3)套接口是一个监听套接口且已完成的连接数为非0.
(4)有一个套接口错误等处理。
(1) 套接口发送缓冲区的可用空间字节娄大于等于套接口发送缓冲区低潮限度的当前值且或者(i)套接口已连接,或者(ii)套接口不要求连接。
(2)连接的写这一半关闭,对这样的套接口写操作将产生信号SIGPIEP。
(3)有一个套接口错误待处理。
下面是select函数的一个例子,主要参考网上的例子,并进行的适当的改变!并增加了客户端的程序。修改不fd[i]数组,可是实现动态的管理,也解决了,当一个客户不断的断开再连接时,服务器也断开的情况。网址参考如下:
http://www.cnblogs.com/faraway/archive/2009/03/06/1404449.html
|
|
转载于:https://www.cnblogs.com/p2liu/archive/2010/07/23/6048832.html
Linux中select函数学习及实例笔记相关推荐
- Linux中select函数的使用 select() Linux linux函数 select
阻塞式I/O编程有两个特点: 一.如果一个发现I\O有输入,读取的过程中,另外一个也有了输入,这时候不会产生任何反应.这就需要你的程序语句去用到select函数的时候才知道有数据输入. 二.程序去se ...
- linux中Select 函数占用cpu过高问题
这几天用select函数发现用select函数占用的cpu过高,虽然我已经设置了阻塞时间. 这是因为select函数是会修改时间变量timeval结构体的值,这个结构体的值设置成0,每次select结 ...
- linux中select()函数分析
http://blog.csdn.net/zi_jin/article/details/4214359 =================================== Select在Socke ...
- 鸟哥的linux私房菜-基础学习篇 读书笔记
从事linux工作一年多,算是能够熟练运用linux服务器,但仍觉得自己对Linux的原理,理论缺乏空洞,潜下心来认真阅读尘封的鸟哥经典,知识点很全,收获颇多,实践与知识结合,知行合一,对linux开 ...
- python中set()函数的用法,python中set()函数简介及实例解析
python中set()函数简介及实例解析 set函数也是python内置函数的其中一个,属于比较基础的函数.其具体介绍和使用方法,下面进行介绍. set() 函数创建一个无序不重复元素集,可进行关系 ...
- linux中probe函数传递参数的寻找(下)
点击打开链接 linux中probe函数传递参数的寻找(下) 通过追寻driver的脚步,我们有了努力的方向:只有找到spi_bus_type的填充device即可,下面该从device去打通,当两个 ...
- 鸟哥的LINUX私房菜 基础学习篇 读书笔记 -- 第零章 计算机概论 (一)
鸟哥的LINUX私房菜 基础学习篇 读书笔记 -- 第零章 计算机概论 (一) 第零章 计算机概论 0.1 电脑:辅助人脑的好工具 0.1.1 计算机硬件五大组成部分 0.1.2 一切设计的起点: C ...
- Linux中pthread_create函数的实现
转:http://blog.sina.com.cn/s/blog_6abf2c040101fpca.html 原文地址:[原]Linux中pthread_create函数的实现作者:jiq408694 ...
- python中len的用法_总结Python中len()函数的使用实例
这篇文章主要简单介绍了Python中的len()函数的使用,包括在四种情况下的使用小例子,是Python学习当中的基础知识,需要的朋友可以参考下 函数:len() 1:作用:返回字符串.列表.字典.元 ...
- 机器学习实战中的函数学习记录
title: 机器学习实战中的函数学习记录 date: 2020-05-01 09:20:50 tags: [python函数] categories: 机器学习实战 更多内容请关注我的博客 记录机器 ...
最新文章
- Xamarin.Forms教程下载安装Visual Studio 2015
- java使用教程——组件及事件处理——菜单(添加图标)
- python一个函数调用另一个函数_在Python中将函数作为另一个函数的参数传入并调用的方法...
- php sem acquire,PHP | 关于php中sem_get failed for key no space left on device问题的解决方案...
- Linux中VMware虚拟机硬盘空间扩大方法
- DBeaver连接mysql驱动下载失败怎么办?
- Linux下安装whl文件
- Junit单元测试的基本编码步骤
- windows删除文件时需要管理员权限的方法
- 标准差(Standard Deviation) ,标准误差(Standard Error)及置信区间(CI)通俗解释
- Java编程题修院子_2020大学moocJava程序设计题目答案
- 计算机流程图设计教程,流程图制作工具分享,在电脑上就可以画图
- linux进行挂载Nas存储
- kubernetes 开发必须要知道的知识点—— API Group
- 一般人不会告诉你的跨境电商货源渠道大全
- ssh登录主机报错: Unable to negotiate with 172.222.222.243 port 22: no matching key exchange method found.
- python运行excel宏_从python运行excel宏
- 前端字体图标的使用(阿里、icomoon)
- Linux的.a、.so和.o文件
- java做百度语言识别_java实现百度云文字识别接口代码
热门文章
- Flutter之Stack
- Android PopupWindow的简单说明
- 都在这儿了!5月 Flink 社区发版、更新汇总
- ipmi java sdk,IPMI Library for Java
- vant ui 官方文档_转载:微信小程序UI组件库合集
- python可能导致异常的代码_Python程序可能导致文件系统错误?
- php中怎么引用js变量_理解下 Go 中的引用是怎么回事
- lamda表达式修改数据_关系数据库SQL语言简介
- linux子目录大小限制,如何解决linux子目录的数量限制?
- pythonATM,购物车项目实战1,项目说明