|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : ouvir un fichier à partir d'un inode [ Linux / Fichier & Disque ] (nico_fip1)
Informations & options pour cette discussion
jeudi 31 août 2006 à 23:37:48 |
ouvir un fichier à partir d'un inode

nico_fip1
|
Bonsoir, Je travaille actuellement sur un système QNX (type UNIX et POSIX) Si j'ai bien compris, les fichiers d'un dossiers sont gérés par une liste chainée. En effet, lorsque je fais un char[100] sFicher ; for(i=0;i<10000;i++) { sprintf(sFichier,"%d.txt", i) FILE* fichier=fopen(sFichier); fclose(fichier); }l'opération est de plus en plus longue. j ai découvert une librairie, <dirent.h>, avec laquelle je peux parcourir, succecivement, tous les fichiers d'un dossier. Je récupère alors l'Inode du fichier. Est il possible, à partir de ce Inode, d'ouvrir le fichier dans repasser par le nom et la fonction fopen ? Merci d'avance pour votre réponses. NicoStrasbourg France
|
|
|
vendredi 1 septembre 2006 à 01:39:38 |
Re : ouvir un fichier à partir d'un inode

AlexN
|
un inode ou index node est une structure de données contenant les propriétés d'une entrée dans le système de fichier. A un fichier ou référence (path) correspond un et un seul inode. Par contre à un inode correspond 1 à n références (regardes la fonction ln). Par conséquent, si on utilisait les inodes avec les primitives de manipulation de fichier (fopen...), le système ne saurait pas quelle référence (fichier) utiliser.
|
|
|
vendredi 1 septembre 2006 à 01:46:25 |
Re : ouvir un fichier à partir d'un inode

AlexN
|
Pardon de 0 à n et non de 1 à n, un inode peut exister sans qu'il corresponde à une reférence dans le système de fichier.
|
|
|
vendredi 1 septembre 2006 à 08:39:14 |
Re : ouvir un fichier à partir d'un inode

nico_fip1
|
Merci pour cette réponse....
Si j'ai bien compris, on a 1 inode pour 1 fichier (fichier = données palcées physiquement sur le disque).
Le fonction "opendir" de la librairie <dirent.h>, me retourne une structure "dossier" à partir de laquelle, je peux appeler la fonction "readdir". Celle ci, appelée en boucle, va avancer dans le dossier, en me donnant une structure sur un fichier. Cette structure "dirent" comprorte entre autre, comme champs, le nom du fichier et son inode.
Si de là, je fais appel à la fonction fopen, le système va refaire la correspondance entre le nom du ficher, et son inode, pour retouver l'emplacement physique. N'est-il donc pas possible, d'ouvrir un fichier directement avec l'inode, pour éviter cette manipulation ?
Si mon explication est fausse, n'hésitez pas à me le signaler; et si vous avez des liens expliquant les système sde fichiers.
Merci
Nico Strasbourg France
|
|
|
vendredi 1 septembre 2006 à 11:19:32 |
Re : ouvir un fichier à partir d'un inode

AlexN
|
Nope,
A une inode peut correspondre 0 à n référence (chemin menant à un fichier). La même inode peut être référencée par plusieurs chemins dans le système de fichier. Exemple, soit le fichier : /home/machin/toto.txt on tape la commande suivante : ln toto.txt toto2.txt Si on fait un ls -al, on se retrouve avec deux fichiers aux caractéristiques et au contenu identiques. Et si on modifie toto2.txt, on modifie toto.txt. Car les deux références correspondent à la même inode. Par contre à toto.txt ne correspond qu'une et une seule inode, et à toto2.txt correspond une et une seule inode. Et en fait c'est la même inode pour les deux. La propriété des inodes fait que les deux références sont totalement équivalentes mais "indépendantes" (d'un point de vue référence, pas concernant les blocs de données) : rm toto.txt Il ne reste plus que toto2.txt. On n'a pas supprimé l'entrée d'inode car il reste encore une référence sur elle (toto2.txt)
Le fonction "opendir" de la librairie <dirent.h>, me retourne une structure "dossier" à partir de laquelle, je peux appeler la fonction "readdir". Celle ci, appelée en boucle, va avancer dans le dossier, en me donnant une structure sur un fichier. Cette structure "dirent" comprorte entre autre, comme champs, le nom du fichier et son inode.
Oui
Si de là, je fais appel à la fonction fopen, le système va refaire la correspondance entre le nom du ficher, et son inode, pour retouver l'emplacement physique.
Oui
N'est-il donc pas possible, d'ouvrir un fichier directement avec l'inode, pour éviter cette manipulation ?
Toujours pas puisque qu'à une inode peut correspondre plusieurs références. Ainsi avec l'exemple precédent, si fopen acceptait comme paramètre l'inode, quel fichier faudrait-il ouvrir ? toto.txt ou toto2.txt ? Tandis que fopen(toto.txt), le système sait de quel fichier il s'agit (il a sa vrai référence d'un point de vue utilisateur).
Consultes le fichier d'entête sys/types.h ou sys/stat.h pour la structure d'une inode. Consultes le fichier d'entete dirent.h pour plus d'infos sur la structure dirent. Rien ne vaut un petit détour dans les sources du noyau pour comprendre.
|
|
|
Cette discussion est classé dans : fichier, partir, fichiers, ouvir, inode
Répondre à ce message
Sujets en rapport avec ce message
problèmes liens entre fichiers C et C++ dans un projet Visual C++ 6.0 [ par nico ]
J'ai récupéré un projet contenant des fichiers écrits en C. Le fichier "principal" de ce projet également écrit en C fait appel à des fonctions se tro
créer un arbre à partir d'un fichier word [ par yeager ]
Bonjour je suis nouveau et débutant en langage CJe souhaite pouvoir lire un fichier word comportant des informations sur plusieurs livres. A partir de
Lancer un autre fichier à partir d'un prog en C++ [ par trinitacs ]
J'aimerai lancer un .bat à partir de mon prog en C++. Coment dois-je faire?Est-ce que le .bat peut s'éxécuetr de manière différentes suivant la manièr
[Visual C++] Aide fichiers exe [ par WarioZ ]
bonjour a tous,je débute en C++ et j'ai un probleme avec les fichiers exe que je cree a partir de mes codes sources...Quand je les execute a partir de
pb visual c++ fichiers [ par pichu ]
dans une fonction de visual j'ouvre un fichier fstream en lecture. Ce fichier contient des informations. Mais ca me renvoie true quand j'affiche le ré
aide sur les fichiers [ par dickymoe ]
VinceExiste-t-il une fonction permettant de savoir si un fichier existe ?et une autre permettant de savoir si un fichier est vide ?merci
créer un fichier .mdb à partir d'un pg Cplus plus [ par cvi ]
Créer un fichier .mdb vierge et l'enregistrer dans l'arborescence à partir d'un bouton. Est ce que je pourrai avoir les lignes de code SVP.Merci et à
recherche fichiers executables et comparaisons [ par limsa033 ]
Bonsoir,je cherche à lister tous les fichiers executables d(un disque dur ainsi que leur principales caractéristiques(nom,chemin et taille et date de
problème avec fichiers !!! [ par ben01n ]
salut tout le mondeje prog sous linux et j'aurais besoin d'aide pour un de mes programmes dont j'ai déposé la source sous le nom "client-serveur en ud
Acquisition de Données a partir d'un fichier texte [ par madcow41 ]
'lutBon j'ai un fichier qui contient des lignes formées ainsi :123.145.569.188 - - [12/Apr/2001:00:08:49 +0200] "GET /pagehtml.htm HTTP/1.x" et le res
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version
|