当前位置: 技术问答>linux和unix
select 疑问
来源: 互联网 发布时间:2016-03-30
本文导语: FD_ZERO(&infd); FD_SET(fd, &infd); FD_SET(fd1,&infd); ret = select(fds+1,&infd,NULL,NULL,NULL); if(FD_ISSET(fd, &infd)) { ........ } if(FD_ISSET(fd1, &infd)) { .... } 请问select每次返回时,if(FD_ISSET(fd, &infd))和if(FD_ISSET(fd1, &infd))这两个有可能会同时都...
FD_ZERO(&infd);
FD_SET(fd, &infd);
FD_SET(fd1,&infd);
ret = select(fds+1,&infd,NULL,NULL,NULL);
if(FD_ISSET(fd, &infd))
{
........
}
if(FD_ISSET(fd1, &infd))
{
....
}
请问select每次返回时,if(FD_ISSET(fd, &infd))和if(FD_ISSET(fd1, &infd))这两个有可能会同时都成立吗?
还是说每次select返回,这两个只有其中一个成立?
|
我最近也在研究select,还没完全理解
我现在的理解是:程序顺序执行,先判断前面的,若成立,则返回,不成立,往下,再判断
两个同时成立,先返回前面的。
我现在的理解是:程序顺序执行,先判断前面的,若成立,则返回,不成立,往下,再判断
两个同时成立,先返回前面的。
|
可能同时成立。fds需要是fd和fd1的较大值。
|
|
可能都成立,可能其一成立,也可能都不成立,都是有可能的
|
可能同时成立
|
是否同时成立不是你需要的答案,你应该假设它是成立的。如果同时成立或者不能同时成立对你是必须的话,也许select本身就不是你应该选择的方案。