while (xxx) {
timeout.tv_sec=TIMEOUT;
timeout.tv_usec=0;
FD_ZERO(&set);
FD_SET(sd,&set);
switch (select(FD_SETSIZE,&set,NULL,NULL,&timeout))
xxxxx
}
funciona bien, sin embargoirritante seleccionan la conducta() en c
FD_ZERO(&set);
FD_SET(sd,&set);
while (xxx) {
timeout.tv_sec=TIMEOUT;
timeout.tv_usec=0;
switch (select(FD_SETSIZE,&set,NULL,NULL,&timeout))
xxxxx
}
no lo hace. Funciona la primera vez, pero la próxima vez que se ejecuta a través del ciclo while obtiene un tiempo de espera incluso si el socket sd recibe datos. Me parece una pérdida de recursos tener que vaciar y llenar todo el tiempo.
¿Alguien tiene una buena explicación de por qué esto es, y mejor aún, tal vez una sugerencia de cómo evitarlo?
Creo que parte del código que sacó puede ser importante para entender por qué esto se está comportando como está. – SoapBox