select函数执行返回后会把传入的timeval结构体的数值清零,所以每次都要重新设置select的超时时间才能起作用
错误示范:
struct timeval tm ;
tm.tv_sec = 10; tm.tv_usec = 1000 ;
{
int ret = select(fd_max + 1, &rdfd, NULL, &erfd, &tm);
}
正确写法:
{
struct timeval tm ;
tm.tv_sec = 10; tm.tv_usec = 1000 ;
int ret = select(fd_max + 1, &rdfd, NULL, &erfd, &tm);
}
本文解析了在使用select函数时常见的误区,即其在执行返回后会将传入的timeval结构体的数值清零,因此需要在每次调用前重新设置超时时间。通过对比错误与正确写法,帮助读者理解如何避免这一常见错误。
504

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



