【发布时间】:2018-03-30 21:44:40
【问题描述】:
我对在 struct dirent 定义中使用 d_name[256] 和 NAME_MAX 感到困惑。 d_name[256] 是否意味着文件名长度最多为 256 个字符?然后它还提到了 NAME_MAX(在底部引用)。所以,我的问题是NAME_MAX 在这里如何关联,我在哪里可以找到NAME_MAX 的值和定义?
在man readdir struct dirent 中定义如下。
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 */
};
它还断言
POSIX.1 规定的唯一结构中的唯一字段 是:
d_name[],大小不定,最多有NAME_MAX个字符 在终止空字节('\0')之前;和(作为 XSI 扩展 锡安)d_ino。其他字段未标准化,不存在 在所有系统上;有关更多详细信息,请参阅下面的注释。
【问题讨论】:
标签: c directory readdir dirent.h