Bonjour,
On peut utiliser les FD_SET grâce à 4 macro :
- FD_CLR : pour enlever un file descriptor
- FD_ZERO : pour enlever tout les files descriptor
- FD_SET : pour ajouter un file descriptor
- FD_ISSET : pour vérifier la présence d'un file descriptor.
Mais derrière, comment sont censé être stocké les différents files descriptor?
Théoriquement après un select, on est censé n'avoir dans le fd_set que les files descriptor qui on reçu des données ou qui sont disponible en lecture etc.
Donc pourquoi tester avec FD_ISSET nos 1 000 files descriptor (voir beaucoup plus dans certains cas) si les files descriptor dont on a besoin sont déjà dans le fd_set, pourquoi ne pas récupérer la liste des files descriptor ?
Est-ce que fd_set ne serait pas un char[(FILE_DESCRIPTOR_MAX + 7)/8] (donc FILE_DESCRIPTOR_MAX bits minimum).
Avec pour chaque bit correspondant à un numéro de file descripteur un bit à 0 s'il n'est pas présent et un bit à 1 s'il est présent ?
J'ai essayé de regarder une implémentation mais c'est un peu illisible^^
Partager