Linux编程之select 详解(2)

然后调用select函数,拥塞等待文件描述符事件的到来;如果超过设定的时间,则不再等待,继续往下执行。

select(fd+1, &rset, NULL, NULL,NULL);

select返回后,用FD_ISSET测试给定位是否置位:

if(FD_ISSET(fd, &rset) { ... //do something }

下面是一个最简单的select的使用例子:

#include <sys/select.h> #include <sys/time.h> #include <sys/types.h> #include <unistd.h> #include <stdio.h> int main() { fd_set rd; struct timeval tv; int err; FD_ZERO(&rd); FD_SET(0,&rd); tv.tv_sec = 5; tv.tv_usec = 0; err = select(1,&rd,NULL,NULL,&tv); if(err == 0) //超时 { printf("select time out!\n"); } else if(err == -1) //失败 { printf("fail to select!\n"); } else //成功 { printf("data is available!\n"); } return 0; }

我们运行该程序并且随便输入一些数据,程序就提示收到数据了。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/8b3450853d52d46206ec1c5fd58f4c6d.html