Na% man_de% manpage:
On Linux, select() modifies timeout to reflect the amount of time not slept; most other implementations do not do this. (POSIX.1-2001 permits either behavior.)
Após o primeiro tempo limite, a variável Select
foi atualizada para refletir a quantidade de tempo restante para suspensão, que é 0, porque esperou por todos os 5.01s.
Observe como o último argumento para timeout
não está declarado select
.
Se você quer que ele espere 5.01s novamente nos tempos subseqüentes, você precisa mover este código:
timeout.tv_sec = 5;
timeout.tv_usec = 10000;
... dentro do loop const
.