Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2835 connectés 

  FORUM HardWare.fr
  Programmation
  C

  interet du read par rapport au fread bufferisé

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

interet du read par rapport au fread bufferisé

n°437575
weed
Posté le 24-06-2003 à 02:37:06  profilanswer
 

voila je me pose la question  
 
poiuvez m'expopliquez en 2-3 mots
fread :
je sais que une fois le buffer vide ( ou plein pour un fwrite) y a un appel et apres sémaphore je pense  
et puis le proc regarde si c important ou pas pour traiter une E/S. si pas important c'est mis en attente en mode "attente" ou je ne sais plus trop quoi bloquant ...
 
alors que le read appelle directement un appel systeme
 
EDIT : post corrigé


Message édité par weed le 24-06-2003 à 12:27:21
mood
Publicité
Posté le 24-06-2003 à 02:37:06  profilanswer
 

n°437580
Angel_Doog​las
Le dernier des humains
Posté le 24-06-2003 à 04:25:32  profilanswer
 

Je suis desole mais je n'ai strictement rien compris a ta question (et je ne crois pas que cela vienne de moi).
 
de plus je ne connais que fread en ANSI C. Quelqu'un pourrait confirmer? De meme il me semble que read c'est du C++.

n°437581
Willyzekid
Posté le 24-06-2003 à 06:14:09  profilanswer
 

weed a écrit :

voila je me pose la question  
 
poiuvez m'expopliquez en 2-3 mots
 
je sais que une fois plein ( ou vide pour un read) y a un appel et apres sémaphore je pense et puis le proc regarde si c important ou pas. si pas important il attente en mode attente ou je ne sais plus trop quoi bloquant ...
 
alors que le read appelle directement un appel systeme  


 
Tu devrais lire mon topic posté y a 2/3 jours.
 
read() est un appel système, c'est un system call unix.
_read(), c'est l'équivalent windows me semble-t-il.
quant à fread(), ca fait partie de la librairie C standard et c'est bufferisé. fread utilisent les fonctions fournies par le système (donc read/_read/etc.) A utiliser quand on veut donc quelques choses de portable et bufferisé
 
Ensuite de temps à autre, fread ne suffit pas parce que le buffer n'est pas optimisé pour l'utilisation qu'on en a et surtout, il n'informe pas quand une donnée est vraiment inscrite sur le disque, etc. (encore une fois, voire mon sujet précédent).


---------------
Horizon pas Net, reste à la buvette!!
n°437642
Taz
bisounours-codeur
Posté le 24-06-2003 à 09:11:15  profilanswer
 

tes critiques sur read sont infondées, read a les memes défauts. tu n'as aucune assurance de synchronisation, le noyau ayant ses propres buffers. la solution c'est d'utiliser fsync si dispo, ou  fflush qui fonctionne tres bien.
 
je crois que vous petéz un plomb. y a pas plus lent que read, y a pas plus lent qu'un appel système

n°437879
weed
Posté le 24-06-2003 à 12:24:07  profilanswer
 

Angel_Dooglas -> oui je te comprends j'ai loupé la moitié des mots, c'est normal que tu puisse pas comprendre ....
je pense que j'ai posté ds la bonne section, j'ai posté dans la section C et non pas C++. cela me semblerait logique qu'il n'y ait pas read en C++ car ce language ne permet pas de travailler aussi bas que C. avec le read comme je l'ai dit c'est toi qui déclenche direct un appel système et pour faire ca je pense que c++ soit fait pour ca.  
 
Willyzekid -> je connaissais pas _read pour windows, merci  
 
++Taz -> tu voulais parlais de fflush pour fread je pense qui te permet de vider le flot ou flux .....
 
 
 

n°437914
theshockwa​ve
I work at a firm named Koslow
Posté le 24-06-2003 à 13:05:34  profilanswer
 

weed a écrit :

++Taz -> tu voulais parlais de fflush pour fread je pense qui te permet de vider le flot ou flux .....


 
le fflush, c'est plutôt pour les fichiers ouvert en écriture, non ? :heink: Parce qu'en lecture, je vois pas trop l'intérêt ... Par contre, en écriture, ca force à écrire le contenu du buffer sur le disque (physiquement quoi)


---------------
last.fm
n°437932
HelloWorld
Salut tout le monde!
Posté le 24-06-2003 à 13:21:06  profilanswer
 

Citation :

je crois que vous petéz un plomb. y a pas plus lent que read, y a pas plus lent qu'un appel système


 
Je suppose que tu veux dire pas plus rapide.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°437936
xilebo
noone
Posté le 24-06-2003 à 13:27:18  profilanswer
 

de toutes facon en tant qu utilisateur on n'a pas le choix, ce sont les seuls acces aux peripheriques et/ou fichier.
 
 
Le principal interet de read par rapport a fread , c que fread ne sert que pour les fichiers (arretez moi des maintenant si je me trompe)
 
Par contre read permet de lire sur un descripteur, soit un fichier mais aussi un peripherique (/dev/ttyS0 pour lire sur le port serie) , sur un tube, une socket etc... voila.
 
Pour flusher un write par contre je ne sais pas comment faire... mais il me semble que si ca n est pas un fichier, le flush est automatique a la fin de l appel de la fonction ( j'en ai fait les frais d ailleurs :-p )

n°437949
Taz
bisounours-codeur
Posté le 24-06-2003 à 13:37:55  profilanswer
 

fo, on peut construire des FILE* à partir de n'importe quell descripteur. et pour write, y a pas de flush automatique, vous mélangez tout. write tout comme write reviens quand l'opération est terminé. le noyau à lui aussi des tampons, donc quand write reviens , rien ne te garantit que le noyau vide les ses tampons et finalise les ecritures. encore une fois voir fsync!!!!!!!!!  :o

n°437952
xilebo
noone
Posté le 24-06-2003 à 13:39:22  profilanswer
 

ok , merci pour la precision.
 
edit : je ne savais pas pour le fwrite , qu on pouvait ouvrir des flux sur des sockets, tube ou autre.


Message édité par xilebo le 24-06-2003 à 13:40:23
mood
Publicité
Posté le 24-06-2003 à 13:39:22  profilanswer
 

n°437963
Taz
bisounours-codeur
Posté le 24-06-2003 à 13:41:54  profilanswer
 

man fdopen

n°438225
Willyzekid
Posté le 24-06-2003 à 16:34:42  profilanswer
 

++Taz a écrit :

tes critiques sur read sont infondées, read a les memes défauts. tu n'as aucune assurance de synchronisation, le noyau ayant ses propres buffers. la solution c'est d'utiliser fsync si dispo, ou  fflush qui fonctionne tres bien.


 
oui mais le noyau, quelqu'il soit, a ses propres routines de syncronisation (_commit pour Win, etc.) avec lesquels tu es sûr que les données sont inscrites quand tu le veux sur le disque.
 
Il n'y a aucun moyen de vérifier ca avec FILE*, fflush ne te garantie pas l'écriture sur le disque mais il te garantie l'écriture dans le buffer de l'os...


---------------
Horizon pas Net, reste à la buvette!!
n°438562
Taz
bisounours-codeur
Posté le 24-06-2003 à 23:29:04  profilanswer
 

et fsync bordel!!!!!!!!!!!!!!!!!!!

n°438571
Willyzekid
Posté le 24-06-2003 à 23:52:15  profilanswer
 

++Taz a écrit :

et fsync bordel!!!!!!!!!!!!!!!!!!!


 
Aya...
 
fsync, c'est un call unix, equivalent à _commit de windows. Ca n'appartient absolument pas à la librairie standard...
 
Pour vérifier qu'un buffer est bien inscrit sur le disque les fonction de la librairie standard architecturées autour de FILE* ne suffisent pas... Tu es obligé, comme tu viens toi même de le démontrer, d'utiliser les routines du système comme fsync ou _commit.
 

Citation :


Le noyau, quelqu'il soit, a ses propres routines de syncronisation (_commit pour Win, etc.) avec lesquels tu es sûr que les données sont inscrites quand tu le veux sur le disque.  
 
Il n'y a aucun moyen de vérifier ca avec FILE*, fflush ne te garantie pas l'écriture sur le disque mais il te garantie l'écriture dans le buffer de l'os...


Message édité par Willyzekid le 24-06-2003 à 23:57:19

---------------
Horizon pas Net, reste à la buvette!!
n°438573
Taz
bisounours-codeur
Posté le 24-06-2003 à 23:58:24  profilanswer
 

ça j'avais bien compris, cela dit la lecture du topic montre clairement que l'on s'interesse aux appels systèmes. si tu veux chercher la mouche, n'importe quel sync n'assure juste que le transfert vers les buffer du système E/S, donc on a aucune assurance de l'écriture physique sur le disque

n°438575
Willyzekid
Posté le 25-06-2003 à 00:04:58  profilanswer
 

++Taz a écrit :

ça j'avais bien compris, cela dit la lecture du topic montre clairement que l'on s'interesse aux appels systèmes. si tu veux chercher la mouche, n'importe quel sync n'assure juste que le transfert vers les buffer du système E/S, donc on a aucune assurance de l'écriture physique sur le disque


 
Ben ouais c'est ce que je disais dans mon premier poste...On s'est pas compris dés le départ apparement.
 
D'un autre coté, j'étais en train de me demander si fflush() n'écrivait effectivement pas sur le disque...Mon programme de test n'écrit rien sur le disque mais les descriptions de fflush que je trouve se contredisent allégrement.


Message édité par Willyzekid le 25-06-2003 à 00:05:49

---------------
Horizon pas Net, reste à la buvette!!
n°438577
Taz
bisounours-codeur
Posté le 25-06-2003 à 00:08:26  profilanswer
 

  [:spamafote] t'auras jamais aucune garantie puisque c'est le disque qui gère ses buffer plus ou moins comme bon lui semble (surtout en SCSI)

n°438665
LetoII
Le dormeur doit se réveiller
Posté le 25-06-2003 à 09:06:21  profilanswer
 

++Taz a écrit :

  [:spamafote] t'auras jamais aucune garantie puisque c'est le disque qui gère ses buffer plus ou moins comme bon lui semble (surtout en SCSI)


 
D'autant plus qu'un système de fichier comme NTF va journaliser les écriture disque et les différer.


---------------
Le Tyran
n°438666
Taz
bisounours-codeur
Posté le 25-06-2003 à 09:09:53  profilanswer
 

NTF?

n°438669
LetoII
Le dormeur doit se réveiller
Posté le 25-06-2003 à 09:19:53  profilanswer
 


S
 
 [:ddr555] Oublié une lettre, désolé


---------------
Le Tyran
n°438677
Taz
bisounours-codeur
Posté le 25-06-2003 à 09:24:56  profilanswer
 

je crois que t'as pas conscience que la journalisation de NTFS a un train de retard...

n°438688
HelloWorld
Salut tout le monde!
Posté le 25-06-2003 à 09:39:06  profilanswer
 

Développe stp.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°438701
LetoII
Le dormeur doit se réveiller
Posté le 25-06-2003 à 09:50:02  profilanswer
 

++Taz a écrit :

je crois que t'as pas conscience que la journalisation de NTFS a un train de retard...


 
Précise ta pensée stp.
 
Grillé  [:ddr555]


Message édité par LetoII le 25-06-2003 à 09:51:27

---------------
Le Tyran
n°438708
Taz
bisounours-codeur
Posté le 25-06-2003 à 09:57:38  profilanswer
 

Non, on est pas là pour ça.

n°438711
LetoII
Le dormeur doit se réveiller
Posté le 25-06-2003 à 09:59:26  profilanswer
 

++Taz a écrit :

Non, on est pas là pour ça.


 
Merde pour une fois qu'on discute de trucs intéressants, on se fait un chtit topique alors?


---------------
Le Tyran
n°438717
Taz
bisounours-codeur
Posté le 25-06-2003 à 10:04:31  profilanswer
 

pas sur cette cat alors, viendez en territoire ennemi sur OSA si vous osez

n°438719
skeye
Posté le 25-06-2003 à 10:05:26  profilanswer
 

++Taz a écrit :

pas sur cette cat alors, viendez en territoire ennemi sur OSA si vous osez


[:rofl]

n°438724
LetoII
Le dormeur doit se réveiller
Posté le 25-06-2003 à 10:11:45  profilanswer
 

++Taz a écrit :

pas sur cette cat alors, viendez en territoire ennemi sur OSA si vous osez


 
Attend je prend mon équipement d'aventurier et j'arrive  :o


---------------
Le Tyran
n°438897
HelloWorld
Salut tout le monde!
Posté le 25-06-2003 à 12:55:25  profilanswer
 

La suite ici alors ...
http://forum.hardware.fr/forum2.ph [...] subcat=205
 
(Franchement je vois pas en quoi justifier tes propos en 2 lignes histoire de donner des pistes de recherche est HS).


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°438900
Taz
bisounours-codeur
Posté le 25-06-2003 à 12:57:28  profilanswer
 

parce que  [:samduloft]

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  interet du read par rapport au fread bufferisé

 

Sujets relatifs
Buffer, fichier, read et freadRapport et coloration syntaxique ?
[HTML] l'interet de TBODY ???open, read, write sous linux j ai un chtit probleme
[C/C++] Comparaison de fichier: fread / fgetcprobleme pour lire dans un fichier avec fread
[JAVA] Socket UDP et InputStream, probleme de read[W3C] quel est l'intéret d'être XHTML Compliant ? pourquoi pas HTML4 ?
[PHP] calcule de date du lendemain par rapport a une date donnée! 
Plus de sujets relatifs à : interet du read par rapport au fread bufferisé


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR