Accueil > Forum > > > > ouvir un fichier à partir d'un inode
ouvir un fichier à partir d'un inode
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ée 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
|
Derniers Blogs
[WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|