select() è definita come:Query Selezionare Sistema chiamata
int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *errorfds, struct timeval *timeout);
NFDS rappresenta il più alto descrittore di file in tutte le date set più uno. Vorrei sapere perché sono necessari questi dati per select() quando sono disponibili le informazioni di fd_set.
Se i FD nel set dicono, 4, 8, 9, il valore di nfds sarebbe 10. Selezionerebbe() moniter fds 9,8,7,6,5,4?
Ma il numero di bit in int è 32, ma come può monitorare qualsiasi fd con un valore maggiore di 31 – Poorna
qualcuno può rispondere a questo commento? – euphoria83
@Shishir: Posix definisce 'fd_set' come una struct. Gli interni sono definiti dall'implementazione, ma un'implementazione diffusa è che la struttura contenga una serie di long con abbastanza bit nell'array per coprire tutti i possibili fd. Questo funziona perché Posix richiede anche 'open' per restituire "il descrittore di file inutilizzato con il numero più basso". Quindi non si supererà il range dell'array se non si hanno i file FD_SETSIZE aperti. http://pubs.opengroup.org/onlinepubs/007904975/basedefs/sys/select.h.html – indiv