使用Select的3个注意事项

简介:

#include <sys/select.h>

int select(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);

int pselect(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, const struct timespec *timeout, const sigset_t *sigmask);

 

FD_CLR(int fd, fd_set *set);

FD_ISSET(int fd, fd_set *set);

FD_SET(int fd, fd_set *set);

FD_ZERO(fd_set *set);

注意事项:

每次调用前,重新设置所关心的描述符;

每次调用前,重新设置等待时间;

准备好的描述符定义为: read/write 描述符时不会阻塞 (socket 断开将可读 ) 

解释:

1 fd_set* 以指针形式传入, select 将扫描所关心的描述符,改变其值后返回。用户判断此返回值得知哪些描述符可读 / 可写。这意味着:在 select 返回后,描述符集必须重新设置!

2 Timeout 以指针传入,就是说系统不保证其值不会被更改!


本文转自 zhenjing 博客园博客,原文链接: http://www.cnblogs.com/zhenjing/archive/2011/04/20/2021770.html  ,如需转载请自行联系原作者


相关文章
|
4月前
|
SQL 关系型数据库 MySQL
Greenplum【SQL 02】ROW_NUMBER编号函数使用方法举例
Greenplum【SQL 02】ROW_NUMBER编号函数使用方法举例
58 0
|
4月前
|
关系型数据库 MySQL
零基础带你学习MySQL—Select语句以及注意事项(十)
零基础带你学习MySQL—Select语句以及注意事项(十)
|
8月前
|
SQL 数据库
拷贝的表的SQL语句 SELECT INTO 和 INSERT INTO SELECT的用法与区别
语句形式为:Insert into Table2(field1,field2,…) select value1,value2,… from Table1
99 0
|
11月前
|
SQL 关系型数据库 数据库
如何实现update select 语句
​ 这次的文章出现也是因为这样一个类似的需求,个人需要把一个30万行(后续会发文介绍常见的处理手段)的数据文件入库,同时需要将部分字段迁移到另一张表,两个表之间通过两个字段进行and匹配。
160 0
|
11月前
|
SQL 数据库
数据库sql语句(count(*)和count(字段))
数据库sql语句(count(*)和count(字段))
148 0
|
SQL Java 数据库连接
SELECT操作
SELECT操作
52 0
|
SQL Java 关系型数据库
SQL 语法--表特定语句--create、insert、desc | 学习笔记
快速学习 SQL 语法--表特定语句--create、insert、desc
170 0
SQL 语法--表特定语句--create、insert、desc | 学习笔记
|
SQL 关系型数据库 MySQL
软件测试mysql面试题:编写SQL SELECT查询,该查询从Employee_Details表返回名字和姓氏。
软件测试mysql面试题:编写SQL SELECT查询,该查询从Employee_Details表返回名字和姓氏。
82 0
|
SQL 关系型数据库 MySQL
SQL练习题--5.6和5.7版本的Group by 用法以及中间表使用
M-统计每个老师教授课程的学生总数-if(expr1,expr2)
311 0

相关课程

更多