Bonjour,
Sous Unix, je développe un démon "écoute" plusieurs sources d'événements extérieurs (timer, inotify, ...) grace à la fonction "poll()".
Parmi eux, la connexion sur un socket Unix. Et c'est là que le bas blesse ... comment la rendre non bloquante ?
Je m'explique, pour écouter une socket, s'enchainent les fonctions :
- socket()
- bind()
- listen()
- accept()
Accept() bloque jusqu'à ce qu'une connexion arrive ... donc les autres événements ne seront pas pris en compte.
Alternativement, je peux le mettre NON BLOQUANT mais il faut alors faire une boucle qui l'appele régulièrement à la mode busywait.
Franchement, ne peut-on pas faire mieux ? Tout passer par poll() et ne lancer le accept() que si une connection est en attente ?
Merci pour vos idées
-----