网络编程中select()函数的功能
在网咯编中,select()函数主要应用方式如下
FD_ZERO(&wfds);
FD_SET(sockfd_camera,&wfds);
ret = select(1+sockfd_camera,NULL,&wfds,NULL,&tm);
这个是先建立socket套接字,注册一个套接字sockfd_camera,
然后使用select选定这个sockfd_camera。之后在阻塞在接受。
select()函数除了这种用法之外还可以用做定时器
比如
tv.tv_sec =0;
tv.tv_usec = 10000;
select (0, NULL, NULL, NULL, &tv);
这就是定义一个10ms的定时器。可以用作延时
void microseconds_sleep(unsigned long uSec){
struct timeval tv;
tv.tv_sec=uSec/1000000;
tv.tv_usec=uSec%1000000;
int err;
do{
err=select(0,NULL,NULL,NULL,&tv);
}while(err<0 && errno==EINTR);
}
#include <stdio.h>
#include <sys/time.h>
#include <errno.h>
int main()
{
int i;
for(i=0;i<5;++i){
printf("%d\n",i);
//seconds_sleep(1);
//milliseconds_sleep(1500);
microseconds_sleep(1900000);
}
}