Je suis confus par l'utilisation de d_name[256]
et NAME_MAX
dans la définition struct dirent. Est-ce que d_name[256]
signifie que la longueur du nom de fichier peut être au maximum de 256 caractères? Puis il mentionne aussi NAME_MAX (cité en bas). Donc, ma question est comment NAME_MAX
se rapporte ici et où puis-je trouver NAME_MAX
valeur et définition?struct dirent dans C d_name [256] et la définition NAME_MAX
En man readdir
struct dirent
est défini comme suit.
struct dirent {
ino_t d_ino; /* inode number */
off_t d_off; /* not an offset; see NOTES */
unsigned short d_reclen; /* length of this record */
unsigned char d_type; /* type of file; not supported
by all filesystem types */
char d_name[256]; /* filename */
};
Il affirme également que
Les seuls champs de la structure dirent qui sont mandatés par POSIX.1 sont:
d_name[]
, de taille quelconque, avec au plusNAME_MAX
caractères précédant le zéro de terminaison octet ('\ 0'); et (sous la forme d'une extension XSI sion)d_ino
. Les autres champs ne sont pas normalisés et ne sont pas présents sur tous les systèmes; Voir les NOTES ci-dessous pour plus de détails.
NAME_MAX n'inclut pas le terminateur, juste strlen, donc il correspond à d_name. –