Ich bin verwirrt durch die Verwendung von d_name[256]
und NAME_MAX
in struct Dirent Definition. Bedeutet d_name[256]
, dass die Länge des Dateinamens höchstens 256 Zeichen betragen darf? Dann erwähnt es auch NAME_MAX (unten zitiert). Also, meine Frage ist, wie NAME_MAX
bezieht sich hier und wo kann ich NAME_MAX
Wert und Definition finden?struct dirent in C d_name [256] und NAME_MAX Definition
In man readdir
struct dirent
ist wie folgt definiert.
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 */
};
Es behauptet auch, daß
die einzigen Felder, in der Struktur, die durch dirent POSIX.1 beauftragt werden, sind:
d_name[]
, nicht spezifizierter Größe, mit höchstensNAME_MAX
Zeichen vor der abschließenden Null Byte ('\ 0'); und (als XSI extension sion)d_ino
. Die anderen Felder sind nicht standardisiert und nicht auf allen Systemen vorhanden; Weitere Details finden Sie in den HINWEISEN.
NAME_MAX enthält nicht den Terminator, nur strlen, so dass er mit d_name übereinstimmt. –