输出错误码为
printf("errno: %2d\t%s\n",errno,strerror(errno));
Invalid argument
ret = select(sock_fd+1, &readset, NULL, NULL, &tv);
原来是tv参数超范围,在有的机器上运行没有问题,这真一个非常隐晦的错误。
tv.tv_sec = 1;
tv.tv_usec = 1000;
这2个值不超限。
本文探讨了一个编程问题,当在某些系统上使用select函数时遇到Invalidargument错误,原因在于tv参数设置超出了预期范围。作者强调了这种错误的隐蔽性,并提供了相关代码片段和解决方法。
输出错误码为
printf("errno: %2d\t%s\n",errno,strerror(errno));
Invalid argument
ret = select(sock_fd+1, &readset, NULL, NULL, &tv);
原来是tv参数超范围,在有的机器上运行没有问题,这真一个非常隐晦的错误。
tv.tv_sec = 1;
tv.tv_usec = 1000;
这2个值不超限。

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