Bonjour a tous,
Je rencontre un comportement vraiment bizarre de l'affichage avant un appel a select().
Voila, dans mon code qui est une application de chat client/serveur avec des sockets en tcp sous unix, je rencotre ce probleme.
Et ma méthode afficherMenu() est la suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 /* pour afficher le menu de l'application */ afficherMenu(); FD_ZERO(&rdfs); FD_SET(STDIN_FILENO, &rdfs); FD_SET(maSocket, &rdfs); if( select( maSocket + 1, &rdfs, NULL, NULL, NULL ) == -1 ) { perror("Erreur dans select"); exit(0); } if(FD_ISSET(STDIN_FILENO, &rdfs) { scanf("%d", &choix); ........................ }
Le fonctionnement est simple, select surveille l'entrée standard, pour capturer des saisies de l'utilisateur et surveille aussi la socket pour recevoir les messages des autres membres.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 void afficherMenu() { printf("1 - Envoyer un message a un membre\n"); printf("2 - Envoyer un message a tous les membres\n"); printf("3 - Se déconnecter\n"); printf("Choisissez une commande"); }
Le problème est que dans l'affichage du menu avant select, les 3 commandes s'affichent mais pas la dernière ligne qui demande de choisir une commande, il y a juste le prompteur qui attend une saisie et ca se bloque.
Donc si jamais quelqu'un a une explication a ca, elle serait la bienvenue et merci d'avance a tous.
Partager