2010-05-10 8 views
1

Je suis en train de programmer une application (client/serveur) en C++ pour linux en utilisant epoll y pthreads mais je ne sais pas comment gérer les appels connect() pour attacher une nouvelle connexion dans la liste des descripteurs si une boucle avec epoll_wait() est en cours d'exécution (Edge-triggered), Comment puis-je le faire? ... Je pourrais utiliser un descripteur de fichier fictif pour déclencher un événement et scape d'attente ?, ou un simple appel à connect() pourrait déclencher l'événement ?? ...Connexions client avec epoll

Désolé pour mon mauvais anglais ...

Répondre

1

Oui, vous pouvez utiliser un autre descripteur de fichier qui est juste pour réveiller votre boucle epoll_wait(). Utilisez pipe() pour créer le descripteur de fichier. Ajoutez l'extrémité de lecture du tube à votre liste epoll et écrivez un seul octet à la fin de l'écriture lorsque vous souhaitez le réactiver. Le côté lecture peut simplement lire cet octet et le rejeter.

+0

Merci, je vais utiliser 'pipe()' pour les anciennes versions du noyau et 'eventfd()' pour les nouvelles versions du noyau (je l'ai trouvé dans les pages man.) adew –

Questions connexes