OVH Cloud OVH Cloud

Nom de fichier limité à 255 caractères. Mais le nom part-il de la racine ?

20 réponses
Avatar
Francois Lafont
Bonjour à tous,

Je me posais la question suivante. Dans les divers documentation sur
Linux, on lit souvent que le nom des fichiers est limité à 255
caractères. Mais le nom d'un fichier c'est quoi exactement ?

1) c'est "/home/durant/MesScripts/toto.sh"

2) ou c'est juste "toto.sh"



Merci d'avance.


--
François

10 réponses

1 2
Avatar
Fran
Francois Lafont avait écrit le 05/01/2009 :

Pourtant le nom complet faisait bien plus que 255 caractères lui (à
cause de la partie "/home/francois/").



Donc ça contredit ce que vous dîtes, non ? (vous me mettez le doute).



Au temps pour moi. La limite est bien de 255 caractères pour un nom de
fichier ou de répertoire.
Pour la longueur totale du chemin, c'est 1023 caractères.
Source :
http://www.linux-france.org/article/man-fr/man2/truncate-2.html

--
François
Pour vivre heureux, il faut coucher sur la paille que l’on voit dans
l’œil de son voisin, et se chauffer avec la poutre qu’on a dans le sien
- Alphonse ALLAIS
Avatar
Nicolas George
François wrote in message
:
Pour la longueur totale du chemin, c'est 1023 caractères.
Source :
http://www.linux-france.org/article/man-fr/man2/truncate-2.html



Eh bien cette page, en plus de faire une indigestion de cyan, est fausse.
Avatar
François
Nicolas George a écrit :

#define PATH_MAX 4096 /* # chars in a path name including
nul */



Je viens de lire 1023 ici :
http://www.linux-france.org/article/man-fr/man2/truncate-2.html

il n'y a plus qu'à essayer, mais il se fait tard ...

--
François
Se taire en classe, c'est respecter le sommeil des autres.
Avatar
Erwan David
Fabien LE LEZ écrivait :

On 05 Jan 2009 22:27:48 GMT, Nicolas George
<nicolas$:

#define NAME_MAX 255 /* # chars in a file name */
#define PATH_MAX 4096 /* # chars in a path name including nul */



Arf... NAME_MAX est compté sans le et PATH_MAX avec. Il y a une
raison historique à cette bizarrerie ?



Oui, NAME_MAX donne la taille de composants d'une seule chaine, le path.

--
Le travail n'est pas une bonne chose. Si ça l'était,
les riches l'auraient accaparé
Avatar
Professeur M
Le Mon, 05 Jan 2009 20:25:07 +0100, Francois Lafont a écrit :

Si la réponse avait été 1), je ne dis pas, la remarque pouvait
éventuellement se justifier, mais dans le cas de 2, c'est franchement
histoire de frimer... ;-)



pas forcément, on peut envisager un script qui créé des fichiers à partir
de certains paramètre et qui ne fait pas la vérification.

Bon, dans ce cas, c'est le script qui est mal fait ;-)
Avatar
Stéphane CARPENTIER
François wrote:

Nicolas George a écrit :

#define PATH_MAX 4096 /* # chars in a path name including
nul */



Je viens de lire 1023 ici :
http://www.linux-france.org/article/man-fr/man2/truncate-2.html

il n'y a plus qu'à essayer, mais il se fait tard ...



Oui, je vois qu'il est tard. Ce n'est pas parce qu'une fonction, en
l'occurrence truncate ici, ne gère pas plus de 1023 caractères dans son
paramètre le système d'exploitation n'est pas capable de gérer des chemins
de plus de 1023 caractères.

--
Stéphane

Pour me répondre, traduire gratuit en anglais et virer le .invalid.
http://stef.carpentier.free.fr/
Avatar
Stéphane CARPENTIER
Nicolas George wrote:

François wrote in message
:
Pour la longueur totale du chemin, c'est 1023 caractères.
Source :
http://www.linux-france.org/article/man-fr/man2/truncate-2.html



Eh bien cette page, en plus de faire une indigestion de cyan, est fausse.



T'es sûr ? Je veux dire, tu as lu la page ? Parce que même si cette page est
vraie, je ne vois pas pour quelle raison il pourrait en déduire quoique ce
soit sur la longueur du chemin d'accès supportée par le système.

--
Stéphane

Pour me répondre, traduire gratuit en anglais et virer le .invalid.
http://stef.carpentier.free.fr/
Avatar
Nicolas George
Stéphane CARPENTIER wrote in message
<4963a3f8$0$25530$:
T'es sûr ?



Oui.

Je veux dire, tu as lu la page ? Parce que même si cette page est
vraie, je ne vois pas pour quelle raison il pourrait en déduire quoique ce
soit sur la longueur du chemin d'accès supportée par le système.



Cette page est la documentation d'un appel système. Si un appel système ne
gère pas les chemins d'accès de plus de n octets, c'est que le système ne
gère pas les chemins d'accès de plus de n octets, par définition.
Avatar
Az Sam
"Stéphane CARPENTIER" a écrit dans le
message de news: 4963a3f8$0$25530$


T'es sûr ? Je veux dire, tu as lu la page ? Parce que même si cette page
est
vraie, je ne vois pas pour quelle raison il pourrait en déduire quoique ce
soit sur la longueur du chemin d'accès supportée par le système.



moi je ne sais pas si c'ets vrai ou pas vrai, en tout cas dans la page je
lise :
"ENAMETOOLONG
Un composant du chemin dépasse 255 caractères ou le chemin
complet dépasse 1023 caractères."


--
Cordialement,
Az Sam.
Avatar
Jean-Marc Desperrier
Stéphane CARPENTIER wrote:
François wrote:

Nicolas George a écrit :

#define PATH_MAX 4096 /* # chars in a path name including
nul */


Je viens de lire 1023 ici :
http://www.linux-france.org/article/man-fr/man2/truncate-2.html
[...]



Oui, je vois qu'il est tard. Ce n'est pas parce qu'une fonction, en
l'occurrence truncate ici, ne gère pas plus de 1023 caractères dans son
paramètre le système d'exploitation n'est pas capable de gérer des chemins
de plus de 1023 caractères.



Sauf que ce que la fonction ne déclare aucunement avoir une limite
interne à 1023, elle prétend documenter le code retour d'un appel
system, et ce sont les paramètres du système qui déterminent quand ce
code sera renvoyé.

Evidement c'est une erreur de documenter un paramètre systéme au niveau
d'une fonction utilisateur, car le jour où le paramètre systéme change,
la doc ne sera surement pas mise à jour. Ici je suis à peu près certain
que c'est limits.h qui a changé avec le temps de 1023 à 4096.
Reste à dénicher le limits.h de vieux kernels pour le confirmer.
1 2