Lecture en boucle d'un FIFO avec un read [réglé]

Lecture en boucle d'un FIFO avec un read [réglé] - C - Programmation

Marsh Posté le 22-02-2010 à 23:44:49    

Bonsoir  
 
Pour un TP à rendre d'ici très bientôt j'ai eu la consigne de réaliser une sorte de réseau de communication virtuel et très basique (programmes : un envoyeur, un serveur, trois destinataires), cela ce fait via des FIFO. Les données doivent être envoyées par blocs et ne peuvent pas dépasser une certaine taille.
La prof insiste sur le fait que nous ne devons utiliser que des write/read pour la lecture/écriture de ces FIFO.
L'envoyeur transmet une structure sur un FIFO (pid,uid,datas), le serveur lui doit récupérer cette structure et en extraire l'UID afin de connaitre le destinataire pour lui envoyer le tout.
 
Je buche juste sur une bêtise depuis deux heures - je suis assez novice dans l'utilisation du read et il me pose un gros problême au niveau de la lecture en boucle du serveur... A savoir que ce serveur doit tourner continuellement (while(1)). Il faudrait que quand le serveur puise toutes les informations sur le FIFO, il se mette en stand by le temps que d'autres données arrivent - sauf que mes manipulations se soldent par un échec, j'ai tenté :
 
while(read(fd,structure,255) != EOF)
{
 //traitement du bloc
}
 
Ce procédé fait malheureusement une boucle infinie... ceci dit si je mets plusieurs instructions read à la chaine, les blocs de données différents sont bien pris en compte.
 
J'espère avoir été clair..Merci a+


Message édité par Er Dehydel le 22-02-2010 à 23:49:43

---------------
À défaut des dragons il me reste les moulins
Reply

Marsh Posté le 22-02-2010 à 23:44:49   

Reply

Marsh Posté le 22-02-2010 à 23:49:29    

Bon ben réglé en 2 minutes...  
 
C'est la valeur 0 qui indique la fin du fichier, autant pour moi.
 
ça doit être l'overdose de fichiers txt.


---------------
À défaut des dragons il me reste les moulins
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed