select 函数 使用
2007-06-15 10:57
399 查看
告知内核等待某一或某些事件发生 而后唤醒进程 或超时返回
int select(int maxfdp1, fd_set *readset, fd_set *writeset, fd_set *excepset,
const struct timeval *timeout); 返回准备好的描述符数量 超时返0错误-1
主要功能:对I/O读 写 异常的监控;定时功能
struct timeval{
long tv_sec; 秒
long tv_usec; 毫秒
}; //可以作为定时器存在,也可以用来做sleep函数的高精版
1.该参数用以指明等待的时间:
a.永远等待 设置NULL指针
b.不等待立即返回 2个元素都设为0
c.等待一定时间 具体设置之
2.并不十分精确 最大精度10ms(系统约束) 但强于sleep()的1s
3.因为有const修饰符 所以该值不会被修改 若要计算时间2次在select前后调用时间函数求差
readset writeset excepset用以标示我们需要内核进行检测读写错误的描述符
1.excepset只有两种情况 一个是out-of-band 另一个书上没详细说
2.用以组整数数组来标识 每一位对应一个描述符 如:array[0]指示0~31个描述符
常用4个宏进行操作
void FD_ZERO(fd_set *fdset); 清除所有位
void FD_SET(int fd, fd_set *fdset); 设置位
void FD_CLR(int fd, fd_set *fdset); 关闭位
void FD_ISSET(int fd, fd_set *fdset); 查询该位是否设置
3.任何一个XXXset设为NULL表示对该状态不关心 全NULL可以代替sleep()使用
4.value-result参数 送时表明哪些描述符需要检测 返回时表明哪些描述符准备完毕
maxfdp1意思是最大描述符号加1
FD_SETSIZE定义fd_set描述符数量 但通常过大所以用这个参数减小系统负担
int select(int maxfdp1, fd_set *readset, fd_set *writeset, fd_set *excepset,
const struct timeval *timeout); 返回准备好的描述符数量 超时返0错误-1
主要功能:对I/O读 写 异常的监控;定时功能
struct timeval{
long tv_sec; 秒
long tv_usec; 毫秒
}; //可以作为定时器存在,也可以用来做sleep函数的高精版
1.该参数用以指明等待的时间:
a.永远等待 设置NULL指针
b.不等待立即返回 2个元素都设为0
c.等待一定时间 具体设置之
2.并不十分精确 最大精度10ms(系统约束) 但强于sleep()的1s
3.因为有const修饰符 所以该值不会被修改 若要计算时间2次在select前后调用时间函数求差
readset writeset excepset用以标示我们需要内核进行检测读写错误的描述符
1.excepset只有两种情况 一个是out-of-band 另一个书上没详细说
2.用以组整数数组来标识 每一位对应一个描述符 如:array[0]指示0~31个描述符
常用4个宏进行操作
void FD_ZERO(fd_set *fdset); 清除所有位
void FD_SET(int fd, fd_set *fdset); 设置位
void FD_CLR(int fd, fd_set *fdset); 关闭位
void FD_ISSET(int fd, fd_set *fdset); 查询该位是否设置
3.任何一个XXXset设为NULL表示对该状态不关心 全NULL可以代替sleep()使用
4.value-result参数 送时表明哪些描述符需要检测 返回时表明哪些描述符准备完毕
maxfdp1意思是最大描述符号加1
FD_SETSIZE定义fd_set描述符数量 但通常过大所以用这个参数减小系统负担
相关文章推荐
- select 函数使用指难
- select()函数使用
- DataTable.Select()中的表达式可使用的函数
- 使用正则表达式检验sql语句(只支持select(不含函数,子
- select 函数使用方法
- linux select 函数使用Demo
- 如何使用select()函数
- DataTable.Select()中的表达式可使用的函数
- select 函数使用指难
- 在循环中使用Select 函数,进行等待超时的使用注意点
- 使用 select 设计超时 connect 函数的问题(linux 上连接 127.0.0.1 任何端口总是成功)
- SqlServer2008全套 3 select...into 建新表,分组,排序,函数使用
- select 函数使用方法
- 如何有效地使用函数select()
- C语言中getopt()函数和select()函数的使用方法
- DataTable.Select()中的表达式可使用的函数
- select在并发中的两点限制与poll函数的使用
- select使用实例——str_cli函数(修订版)
- oracle:case 语句使用(用于select子句的case语句中可以使用in这个函数)
- UNIX网络编程学习(14)--使用select正确处理EOF的str_cli函数修订版