Liens symboliques
GG
Membre
Bonjour à tous,
je cherche à savoir s'il existe une méthode qui retourne un booléen sur un lien symbolique.
En gros j'aimerai via NSFileManager savoir si le fichier actuel est un lien symbolique ou non.
Vous savez ou je peux trouver ça ?
Bon weekend à tous
je cherche à savoir s'il existe une méthode qui retourne un booléen sur un lien symbolique.
En gros j'aimerai via NSFileManager savoir si le fichier actuel est un lien symbolique ou non.
Vous savez ou je peux trouver ça ?
Bon weekend à tous
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
La différence (lien symbolique - Alias) est visible lorsque l'on déplace l'original. Le lien symbolique perd la liaison à l'original, alors que l'alias ne perd pas la liaison.
Pour le hard link, je ne sais pas ce qui se passe si l'on déplace l'original. D'après le "man" on ne peut pas faire de différence entre l'original et le hard link! ???
Un alias est un fichier de ressources pures... Par contre, t'es sûr de ton coup pour le déplacement de l'original ??
Un hard link c'est un lien directement sur l'inode. On ne peut même pas parler d'"original" du coup
Quant au symlink, c'est un fichier qui contient juste le chemin absolu ou relatif de l'original. Ce chemin est stocké dans le datafork, mais inaccessible aux accès standard.
je fais un fichier texte dans un dossier quelconque. J'en fais un alias que je mets sur le bureau. Puis je balade l'original de dossier en dossier et je vérifie le lien en demandant les informations sur l'alias après chaque déplacement. Je confirme que ça marche, le lien est maintenu (par le filemanager je pense).
Mais ça ne marche plus si l'original est détruit et recréer ailleurs!!
Effectivement: ouvert sous un editeur de ressource, les alias ont le datafork vide et le resourcefork contient deux ressources: "alis" et "icns". Dans "alis" ont trouve le chemin courant du fichier original, et dans "icns" l'icone du fichier original.
De quel "filemanager" parles-tu ?
Edit -- non, je n'ai rien dit puisqu'on en déplacant/renommant (même via mv) le fichier on voit bien que la date de modification de l'alias change...
Edit 2 -- ok, en déplacant avec la touche pomme sur un autre volume (en dehors de mon bureau filevault pour être exact) l'alias est perdu. Mais si on rien de l'autre volume vers le bureau l'alias retrouve son petit alors que l'inode à changer...
J'ai reéssayé sous 9.2.2 sur un vieux G3, les alias restent connectés quand on déplace l'original (deplacer sous 9.2.2: glisser-deposer avec la touche pomme appuyé).
Fais la manip que j'ai précédemment indiquée pour t'en convaincre. Je pense que la limite de fonctionnement est la machine elle-même (mais qui sait?)
Le file manager dont je parle est celui de MacOS et non pas de celui d'UNIX (l'un s'appuie sur l'autre mais peut avoir des fonctions supplémentaires).
Donc quand on crée un hard link B vers un fichier A, il est ensuite strictement équivalent de parler de A ou de B : les deux pointent vers les mêmes données, ont les mêmes droits d'accès, ils sont indistingables l'un de l'autre. Un changement sur A affectera B, et vice-versa. On peut même ensuite supprimer le fichier A (qui était, à l'origine, le pointeur original vers les données), il restera toujours B qui pointe vers les données, qui ne seront donc pas effacées du disque.
En gros, un hard link, c'est une sorte de "retain" sur des données du disque (sur un inode en fait) : en créant un hard link, on augmente le "retain count" vers l'emplacement des données disque :P
D'ailleurs, quand on tape "ls -l" dans le terminal pour avoir un listing détaillé d'un répertoire, la 2e colonne (celle après la colonne des droits UNIX rwxrwxrwx) indique le "inode count" donc le nombre de liens symboliques pointant vers le même espace disque que le fichier en question.
Ah tu parles donc de la gestion de fichiers en Carbon, dont le Finder est le digne dernier représentant :P (même les applications Cocoa passent par la couche Unix maintenant )
Et pourtant cette couche Carbon est bien plus puissante... Un simple test :
- Faire un dossier dont le nom contient 255 "a" via le Finder
- Dedans faire un dossier donc le nom contient 255 "b"
- ... "c"
- ... "d"
Essayez de sauvegarder quelque-chose dans le dossier "ddd..." avec une application Cocoa, vous vous ferez jeter ! (en UNIX, les limitations sont de 255 caractères UTF-8 pour les noms de fichiers, et 1023 caractères UTF-8 pour le path ; avec la couche Carbon, ce sont directement les limitations HFS+ : 255 caractères UTF-16 décomposé pour les noms de fichiers, pas de limitation pour la taille du path !)
A ce que je crois savoir et me rappeler: Carbon est une couche qui permettait à des programmeurs Mac traditionnels de faire des applications fonctionnant dans les deux mondes (MacOS et Mac OSX). Son écriture a exigé une ré-écriture de certains appels système pour les rendre ré-entrant et la suppression d'appels jamais utilisés.
Donc à priori c'est une couche Carbon qui gère les alias maintenant.
Il y a dedans pas mal d'explications sur le fonctionnement des alias d'ailleurs...
C'est basé sur plusieurs systèmes de recherche.
Oui, dans le sens où tout ce qui est utilisable de Mac OS "classique" dans OSX a été défini dans Carbon
Il semblerait dans Leopard que le Finder a été aligné sur le reste, impossible de faire ce que tu disais directement avec le Finder... Erreur -43 quand t'essayes de faire le dossier dddddd...
je serais curieux de savoir 8--)
[Edit] Avant qu'on ne me pose la question, c'est sensé créer sur le bureau une série de 10 dossiers imbriqués dont les noms sont formés de 255 caractères "€"
Marrant, ils ont harmonisé tout ça à la sauce UNIX en bridant le FileSystem, mais -43 c'est fnfErr (File Not Found) ; donc correspond pas du tout à l'erreur que ça devrait être.
Il n'arrive même pas à en créer un ? (limitation 255 bytes en UTF-8 décomposé au niveau UNIX, ce qui donnait avec "ls" par exemple un nom tronqué finissant par # + inode en hexadécimal)
Enfin j'imagine que si on le crée sous Tiger et qu'on boote sous Leopard, il ne va pas détruire les path trop longs quand même.
Il faudrait tester dans le terminal à coup de mkdir / cd voir si on peut créer un path > 1024Â ???
Je ferai quelques tests demain au boulot sur ma partition Leopard.
Je ne sais pas s'il y a une limite au niveau du FS pour les path.