CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C - unix]Probleme lecture FIFO

twk
twk
Niveau 6
10 mars 2007 à 21:57:08

Bonjour,
depuis peu je m´interresse a la communication
interprossesus j´ai donc écrit 2 programmes,
un qui joue le rôle de server:
Création du FIFO, overture en lécture/écriture
(histoire de pas bloquer l´ecriture si un autre
prossess ne l´a pas ouvert pas en lécture), ensuite
il attends la saisie d´une chaine de caractères
jusqu´a ce que ´\n´ soit rencontré.
Pour cette partie là c´est bon ca marche sans probleme.
Mais par contre pour le programme client ca se complique
legerement. En effet je ne peux pas recuperer la taille
de la chaine que j´ai ecrite avec le server depuis le client
donc je lis dans le fifo char par char jusqu´a EOF; mais
seuleument le client au lieu de s´arreter a la fin du
FIFO boucle a l´infini.(cette méthode marche bien pour
un fichier normal)
D´apres moi ca vient surement du fait que les FIFO
ne sont pas des fichiers ordinaires et que j´attends EOF
mais je connais pas le proprités des fifos en détail donc
je ne suis pas sur.
Donc je voudrais savoir si vous ne voyez pas une solution
pas trop lourde a implementer qui permetrais de corriger
le probleme.

PS: Quand je lis dans le fifo un nombre statique de chars avec fgets ca marche.

Source du server:http://rafb.net/p/iPBysL73.html
Source du client:http://rafb.net/p/IYqdsI44.html

Merci d´avance.

twk
twk
Niveau 6
10 mars 2007 à 22:46:16

j´ai fais une petite erreur, c´est dans le serveur que ca marche pas et dans le client que ca marche ^^

godrik
godrik
Niveau 30
11 mars 2007 à 00:18:49

ahah!!
c´est un peu bizarre les fifos.
lorsque tu as un fifo ouvert en lecture, le fifo est dit "terminé" (EOF) quand il n´y a plus de processus qui ont ouvert le fifo en ecriture.

mais ton processus ´serveur´ ouvre le fichier en écriture... donc, il y a un processus qui a le fichier ouvert en écriture, donc le système n´envoye pas EOF dans le fifo...
En modifiant ton code source de serveur.c et en y changeant les droit d´ouverture sur le fifo de "a+" a "r", tu obtiens l´effet escompté.

Il faut faire attention aux droits que l´on demande sur les fichiers. Il ne faut pas en demander trop... :)

twk
twk
Niveau 6
11 mars 2007 à 11:19:22

merci beaucoup ^^

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment