<分区>
select()
错误时返回 -1,超时时返回 0,成功时返回集合中描述符的数量。
假设我们有以下伪代码:
while(1){
int s = select(..., &timeout); //timeout = 5 sec
if (s < 0) { perror(...); }
else if(s == 0) { //timeout }
else {
//wait for some recv event or STDIN
}
}
我认识到该进程会一直等待直到超时,或者直到发生某些 recv 事件。
我需要让它在指定的时间内持续计数,同时仅使用 select() 从任意数量的对等方接收数据。
我怎样才能做到这一点?