Comment utiliser la fonction select() dans le support de la programmation?
Le prototype est:
int select (int nfds,
fd_set *read-fds,
fd_set *write-fds,
fd_set *except-fds,
struct timeval *timeout);
J'ai eu du mal à comprendre cette fonction pour un certain temps. Ma question est, si il vérifie tous les descripteurs de fichier de 0 à n-1, et de modifier la lecture des fds, écrivez-fds et à l'exception de-fds, lorsque le retour, pourquoi ai-je besoin pour utiliser FD_SET pour ajouter des descripteurs de fichiers pour le jeu au début, il va vérifier tous les descripteurs de fichier, de toute façon, ou pas?
- C'est que
select
qui a été brisé? 🙂
Vous devez vous connecter pour publier un commentaire.
De ne pas vérifier, de 0 à
nfds
-1. Le premier argument fournit simplement une limite supérieure à la taille, numériquement, les descripteurs de fichiers sont utilisés. C'est parce que le jeu lui-même peut être représenté comme un bitvector, sans un moyen de savoir combien de bits sont effectivement utilisés. La spécification de cette comme un argument séparé aideselect()
éviter de vérifier les descripteurs de fichiers qui ne sont pas en cours d'utilisation.Aussi, un descripteur qui n'est pas, par exemple, du lire est définie lorsque vous appelez
select()
n'est pas cochée, c'est pourquoi elle ne peut pas apparaître dans le jeu lors de l'appel renvoie, soit.Une fois, j'ai eu le même doute que le vôtre. Vous pouvez regarder la suite de la question et réponses:
Requête sur une sélection d'Appel Système