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

  FORUM HardWare.fr
  Programmation
  C

  Implémentation de read

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Implémentation de read

n°2121087
Somn
Posté le 12-01-2012 à 21:42:02  profilanswer
 

Bonjour,
 
J'aurais aimé savoir si il existe une implémentation de la fonction read standard (et write tant qu'on y est), et ou est-ce que je pourrais me procurer ces sources.
 
J'imagine que c'est lié à libc ou glibc. Les sources que j'arrive à trouver sont des fichiers permettant de faire un build, mais c'est assez obscure (je n'arrive pas à trouver les sources en elles-même). Est-ce qu'il existe un explorateur de telle ou telle implémentation d'une libc ? (Peu m'importe que ce soit BSD, MacOS, GNU...).
 
J'imagine que de telles implémentations sont faites en assembleur ? Si ce n'est pas le cas, je suis en fait à la recherche de fonctions qui me permettrait de les réécrire.
 
--Vous n'êtes pas obligé de lire la suite pour participer au fil--
Juste afin d'expliquer exactement le pourquoi de ma recherche : Je suis étudiant en info, et il nous est demandé une fonction permettant de lire n octets à partir d'un descripteur de fichier, pour les mettre dans un buffer (il est donné char*, mais un void* ferait tout aussi bien l'affaire j'ai l'impression). Il nous est aussi demandé de nous comporter exactement comme la fonction read. En l'occurence, ne me posant pas trop de question, j'ai fais quelque chose comme
return read(fd, buffer, n);
Ne trouvant pas de primitives applicables.
Je me doute donc que si le prof nous a donné un tel devoir (en fait il ne nous l'a pas encore donné, je m'avance un peu dans le travail à faire), c'est qu'il y a autre chose à faire. Ou alors c'est un troll.
Bref, ce n'est pas une question urgente, mais ça pique ma curiosité.
 
Merci d'avance ! ;)

mood
Publicité
Posté le 12-01-2012 à 21:42:02  profilanswer
 

n°2121100
tpierron
Posté le 12-01-2012 à 22:44:53  profilanswer
 

Le code source des fonctions "read" et "write" dans la libc tient probablement en une ligne de code: faire un appel système au noyau. Le gros du travail est en fait effectué par le noyau du système d'exploitation, et j'imagine que l'appel système en question doit lui-même tenir en seulement quelques lignes, le temps de rediriger la requète vers le bon driver: réseau, système de fichier, tube de communication, .... là où se trouve la plus grande partie du code. Bref, tu cherches au mauvais endroit si tu veux le détail de l'implémentation.
 
Sinon il existe une autre famille de fonction: la famille stdio. Des fonctions comme fread/fwrite/fputc/fgetc/.... sont en fait basées sur les fonctions read/write. Reprogrammer read/write n'a pas vraiment d'intérêt, car il faut connaître tous les détails du système qu'il y a en-dessous (système de fichier, socket TCP (ha, ha, bon courrage), ...), et autant dire qu'il y en a pour des mois à ne supporter ne serait-ce qu'un seul type de périphérique. Reprogrammer les fonctions stdio pourrait avoir un intérêt cela dit.

n°2121102
Somn
Posté le 12-01-2012 à 22:55:11  profilanswer
 

Merci bien, ça m'avance déjà pas mal.

 

Cependant, ce sont bien les appels systèmes que je cherche. C'est dans le cadre d'un cours de programmation système (Système de gestion de fichier, socket TCP/IP, etc... Bon courage, comme tu dis).

 

Je connais à peu près les fonctions stdio, et je pense pouvoir en trouver l'implémentation avec moins de soucis :).

 

Merci !

 

Edit : et connais-tu l'appel système en question ? Que je puisse fureter du côté du noyau ?


Message édité par Somn le 12-01-2012 à 23:02:01

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

  Implémentation de read

 

Sujets relatifs
Communication PHP / C++ via un socket UNIX => blocage read/write[Ada Project] Anothers Implementation Of Artificial Intelligence
Implementation de map a "double sens"Cacher l'implémentation d'une interface
[résolu] Implémentation des lecteurs/écrivainsSondage web : LE GPGPU, quelle implémentation actuelle ? (Thèse)
[Scheme] Rediriger port d'un readje cherche une implémentation des graphes avec Ada.
Lecture en boucle d'un FIFO avec un read [réglé]implémentation d'un moteur d'inférence
Plus de sujets relatifs à : Implémentation de read


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)