当使用select timeout功能时,请在调用select之前,闯将timeout对象;一定不能创建一个timeout对象,select多次都应用。
struct timeval timout;
timeout.tv_sec = 5;
timeout.tv_usec =0;
while(1)
{
select(fds, &rd_set, NULL, NULL, &timeout);
}
// 上述代码,第一次是5秒超时;进入下一次循环,就是0秒超时了
// 如果希望每次5秒超时,将代码调整为如下:
while(1)
{
struct timeval timout;
timeout.tv_sec = 5;
timeout.tv_usec =0;
select(fds, &rd_set, NULL, NULL, &timeout);
}
本文介绍了在使用select功能时如何正确设置超时。通过实例代码解释了如何避免因复用timeout对象而导致的超时错误,并提供了正确的实现方式。
963

被折叠的 条评论
为什么被折叠?



