Come utilizzare la funzione select() zoccolo di programmazione?

Il prototipo è:

int select (int nfds,
            fd_set *read-fds,
            fd_set *write-fds,
            fd_set *except-fds,
            struct timeval *timeout);

Sto lottando per capire questa funzione per un bel po ‘ di tempo. La mia domanda è, se la verifica di tutti i descrittori di file da 0 a nfds-1, e a modificare le leggi-fds, scrivere-fds e salvo-fds, quando il ritorno, perché ho bisogno di utilizzare FD_SET per aggiungere descrittori di file per il set all’inizio, si occuperà di verificare tutti i descrittori di file comunque, o no?

  • Questo è che select che era rotto? 🙂
InformationsquelleAutor gc . | 2009-05-12

 

2 Replies
  1. 2

    Non controlla da 0 a nfds-1. Il primo argomento solo fornisce un limite superiore delle dimensioni che, numericamente, i descrittori di file utilizzati sono. Questo è perché la stessa possa essere rappresentato come un bitvector, senza un modo per sapere quanti bit sono effettivamente utilizzati. Specificando questo come un argomento separato aiuta select() evitare il controllo di descrittori di file che non sono in uso.

    Inoltre, un descrittore che non è, ad esempio, la lettura è impostata quando si chiama select() non essere controllato, in modo da non apparire nel set quando la chiamata restituisce, sia.

Lascia un commento