VHSeifer
Messages postés18Date d'inscriptionmercredi 20 avril 2005StatutMembreDernière intervention16 mai 2008
-
15 mai 2008 à 22:55
VHSeifer
Messages postés18Date d'inscriptionmercredi 20 avril 2005StatutMembreDernière intervention16 mai 2008
-
16 mai 2008 à 17:55
Bonsoir
J'effectue conjointement de la programmation C/C++ sur Windows & sur Linux.
J'ai un petit soucis ou niveau de la terminaison de mon programme.
J'ai en gros deux threads : le principal crée un socket, bind celui-ci , le met en écoute et puis lance le deuxième thread dont le rôle est d'accepter les connexions des clients (boucle sur un accept() ). Jusque la rien de bien sorcier.
Le principal se met alors en attente d'une touche 'q'. Dès que la touche 'q' est tappée, le thread principal ferme le socket et attend la fin du deuxième thread avant de lui-même se terminer
Mais voila le hic : pour le même code lorsque je tappe 'q' sous Windows la fonction du thread se termine parfaitement car l'accept du deuxième thread n'est plus bloquant , une variable renseigne que c'est la fin du programme et le thread se termine normalement.
Sous Linux, aucune réaction de la part de l'accept(), il reste bloqué le bougre...
( Javais trouvé une solution 'sparadra' : cad faire en sorte que le thread principal fasse un connect() sur lui même mais ce n'est pas très beau quand meme... puis de tt façon le problème se pose aussi lors d'un recv bloquant.... :-s )
Est-ce normal cette réaction différente entre les deux systèmes d'exploitation ?