2011-11-03 3 views
0

Dans un projet, le programme doit stocker les références/identifiants de chaque enfant d'un répertoire dans ses variables (disons une pile). Par exemple, le programme ne doit plus effectuer de recherche de chemin pour chaque enfant une fois qu'un répertoire est lu.stockage des références des enfants d'un répertoire

Je ne suis pas très sûr de savoir comment faire cela. Parce que si les numéros d'inode sont stockés, le fichier/répertoire correspondant ne peut pas être accédé par l'inode droit?

aura-t-gratefull pour quelques conseils

Merci

Edit: Mes raisons pour « ne doit pas effectuer pathlookup à nouveau » ..... un fil est en train de lire l'arborescence du système de fichiers dans une profondeur première manière et quand il lit un répertoire ... les identifiants de ses enfants sont sauvegardés pour le suivre de manière approfondie en premier. Pourquoi sauvegarder les identifiants est parce qu'un répertoire qui a été lu peut être déplacé vers une autre partie du système de fichiers par un thread concurrent et le sous-arbre sous le répertoire déplacé ne peut pas être lu car cette partie de l'arbre a déjà été traversée.

+0

La question peut sembler anodine ... mais je ne sais pas et donc demander. Et ce n'est pas mes devoirs –

Répondre

1

Cela sent comme les devoirs, sauf qu'il n'y avait pas l'habitude d'être un moyen de le faire; c'est possible maintenant, mais seulement en utilisant l'appel système relativement nouveau openat et ses amis (voir la liste "voir aussi" au bas de cette page de manuel). Vous avez raison de ne pas pouvoir ouvrir un fichier par son numéro d'inode; mais en utilisant les fonctions *at, vous pouvez ouvrir un fichier par le nom par rapport à un répertoire que vous avez un descripteur de fichier ouvert (pas un DIR*) pour.

+0

Eh bien non ... ce n'est pas mes devoirs –

+0

Je pensais que ça pourrait être des devoirs parce que "ne doit pas effectuer à nouveau de pathlookup" semble être une contrainte étrange et arbitraire sur le problème. Pourriez-vous éditer dans votre question une explication de pourquoi vous avez cette contrainte? – zwol

+0

@Zack ... a ajouté une modification comme demandé. –