IO转接中用到的select函数FD_ZERO等文件描述符操作函数
来源:互联网 发布:淘宝页面生成器 编辑:程序博客网 时间:2024/06/06 17:50
原文点击打开链接
int select(int maxfd,fd_set *rdset,fd_set *wrset,fd_set *exset,struct timeval *timeout);
步骤如下——
socket s;
.....
fd_set set;
while(1)
{
FD_ZERO(&set);//将你的套节字集合清空
FD_SET(s, &set);//加入你感兴趣的套节字到集合,这里是一个读数据的套节字s
select(0,&set,NULL,NULL,NULL);//检查套节字是否可读,
//很多情况下就是是否有数据(注意,只是说很多情况)
//这里select是否出错没有写
if(FD_ISSET(s, &set) //检查s是否在这个集合里面,
{ //select将更新这个集合,把其中不可读的套节字去掉
//只保留符合条件的套节字在这个集合里面
recv(s,...);
}
//do something here
}
基于上面的讨论,可以轻松得出select模型的特点:
使用select函数的过程一般是:
以下是一个测试单个文件描述字可读性的例子:
int isready(int fd)
{
int rc;
fd_set fds;
struct tim tv;
FD_ZERO(&fds);
FD_SET(fd,&fds);
tv.tv_sec = tv.tv_usec = 0;
rc = select(fd+1, &fds, NULL, NULL, &tv);
if (rc < 0) //error
return -1;
return FD_ISSET(fd,&fds) ? 1 : 0;
}
- IO转接中用到的select函数FD_ZERO等文件描述符操作函数
- 文件描述符——select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
- c# 文件操作等IO函数
- c# 文件操作等IO函数
- Select函数文件描述符集的准备条件
- 文件描述符FD_set FD_zero
- dup等复制文件描述符函数
- Linux中对文件描述符的操作(FD_ZERO、FD_SET、FD_CLR、FD_ISSET
- Linux中对文件描述符的操作(FD_ZERO、FD_SET、FD_CLR、FD_ISSET
- select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET的见解
- select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
- select函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
- select函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
- select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
- select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
- select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
- select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
- select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET
- 值得推荐的C/C++框架和库
- Disgruntled Judge UVA
- 一个继电器开关的简易DFMEA
- NowCoder数列暴力超时解决----斐波那契变种
- 选择排序
- IO转接中用到的select函数FD_ZERO等文件描述符操作函数
- Matlab数字图像 亮度变换
- 慕课网学习spring入门篇-Spring Bean装配(上)
- servlet 补24号
- 20170626 少年的血还是热的吗?
- html标签之块级元素与行内元素
- 搭建微信小程序服务
- 利用POI导出excel
- 2017/6/26日总结