Bonjour à tous !
J'ai le code suivant :
Où fd est déjà définit (c'est un descripteur de tube). Je veux donc lire ce qui se trouve dans mon tube. Deux solutions :
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
18
19
20
21
22
23
24 int fd; unsigned char message_Lu[TAILLE_MESSAGE]; //read(fd, message_Lu, TAILLE_MESSAGE); /*Variables temporaires*/ char s; int i=0, error; while ((error=read(fd, &s, 1)) > 0) { message_Lu[i++] = s; if(s == '\n') { message_Lu[i] = '\0'; break; } } if (error<0) { perror("File descriptor invalide"); exit(EXIT_FAILURE); }
- La première qui est commentée (ligne 4) marche parfaitement, j'arrive à lire ce qui se trouve dans mon tube.
- La deuxième que je veux utiliser (reste du programme ligne 6-24) ne fonctionne pas et me renvoit l'erreur "Bad File descriptor".
Je me dis donc que ma boucle merde quelque part, je force donc mon fd à 0 (pour lire le clavier). Stupeur, ce que je tape au clavier est correctement lu par ma boucle.
Si l'erreur ne vient ni du fd (puisqu'il fonctionne dans la 1ere solution) ni de la boucle (test avec fd à 0), d'où provient-elle ?
Celui qui résoudra ce problème aura ma gratitude éternelle !![]()
Partager