在c中选择调用后是否更改了超时?

0 c sockets linux select

在我的socket编程分配中,我做了一个这样的select调用:

select(s+1, &rfds, (fd_set *)0, (fd_set *)0,&tv)
Run Code Online (Sandbox Code Playgroud)

电视的类型 struct timeval

我阅读手册页面选择,它说:

在Linux上,函数select修改超时以反映未睡眠的时间; 大多数其他实现不会这样做.这会导致读取超时的Linux代码移植到其他操作系统,以及将代码移植到Linux时,在循环中重复使用struct timeval进行多次选择而不重新初始化它时会出现问题.在select返回后考虑超时未定义.

这是否意味着我的电视变量将在调用选择后更改?(我正在使用Ubuntu)

小智 6

是的,它确实.为了便于携带,您应该在每次调用之前重新初始化它select.


Ign*_*ams 5

变量仍然指向相同的结构,但结构的内容将被更改.