select() se define como llamadas al sistema:consulta en Seleccionar
int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *errorfds, struct timeval *timeout);
nfds representa el descriptor de archivo más alto de todos los conjuntos dados más uno. Me gustaría saber por qué se requieren estos datos para select() cuando la información de fd_set está disponible.
Si se dicen el FDS en el conjunto, 4, 8, 9, el valor de nfds habría 10. seleccionaría() moniter FDS 9,8,7,6,5,4?
Pero el número de bits en int es 32, pero ¿cómo puede controlar cualquier fd con un valor mayor que 31 – Poorna
¿alguien puede responder este comentario? – euphoria83
@Shishir: Posix define 'fd_set' como una estructura. Las partes internas están definidas por la implementación, pero una implementación popular es que la estructura contenga una matriz de longs con suficientes bits en la matriz para cubrir todos los fd posibles. Esto funciona porque Posix también requiere 'abrir' para devolver" el descriptor de archivo no utilizado con el número más bajo ". Por lo tanto, no excederá el rango de la matriz a menos que tenga archivos FD_SETSIZE abiertos. http://pubs.opengroup.org/onlinepubs/007904975/basedefs/sys/select.h.html – indiv