J'écris une application en C pour linux, qui utilise 2 bibliothèques tierces séparées. Les deux bibliothèques sont asynchrones et utilisent select(). Ils fournissent également une API qui renvoie les descripteurs de fichiers qu'ils attendent. Mon intention est de les passer dans mon propre select(), puis de ramener le contrôle à la bibliothèque, quelle que soit la valeur de leur fd.appel unix select(): comment combiner fd_sets?
Je pense que j'ai écrit la plupart, mais j'ai des problèmes au niveau des paramètres select(): Les deux bibliothèques ne donnent pas de descripteurs de fichiers individuels, mais des pointeurs sur leurs fd_sets en lecture et en écriture. J'ai besoin de combiner les fd_sets retournés de ces bibliothèques dans un fd_set pour la lecture, un fd_set pour l'écriture, etc.
Des suggestions sur la façon dont je peux combiner 2 fd_sets en un résultat fd_set?
Addendum Désolé! J'aurais dû être plus clair ... ces librairies ne renvoient que les fd_sets ... Je ne connais pas le nombre de FDs dans chaque set pour que je puisse faire une boucle for et régler chaque FD individuellement .. y at-il un moyen simple de déterminer cela donné juste un fd_set?
* Je suis en train d'écrire une application en C pour Linux, qui utilise 2 séparées bibliothèques tierces. * Devrait * Je suis en train d'écrire une application en C pour Linux qui utilise deux bibliothèques tierces. * – mcandre
Etes-vous sûr que cette stratégie va fonctionner? Généralement, ces bibliothèques implémentent leur propre boucle d'événements et attendent que vous configuriez des rappels et que vous leur transfériez le contrôle exclusivement. Les bons vous permettront d'ajouter des descripteurs de fichiers de votre choix à leurs listes de sélection. Dans un programme à un seul thread, vous ne pouvez pas avoir facilement 2 boucles d'événements de contrôle exclusives. – bjg