2

用户名或组名在 Linux 上的最大字符数是多少?

我需要分配一个缓冲区,并且想知道我需要分配多少空间来保证它对于我的应用程序可能遇到的任何组或用户名都足够大。

4

1 回答 1

4

(现在问题已重新打开,将我的评论放入答案中)

POSIX 指定 LOGIN_NAME_MAX 必须 >= _POSIX_LOGIN_NAME_MAX。_POSIX_LOGIN_NAME_MAX 又被定义为 9。在 Linux 上,LOGIN_NAME_MAX 似乎是 256。

对于团体,我认为没有任何相似之处。可以通过 getgrnam_r() 和 getgrgid_r() 函数来猜测某种上限,它们为 struct group 中的 char* 条目获取用户提供的缓冲区。可以通过 sysconf(_SC_GETGR_R_SIZE_MAX) 或宏 NSS_BUFLEN_GROUP 检索此缓冲区所需的最大大小。在 Linux 上,NSS_BUFLEN_GROUP 似乎是 1024。

于 2011-05-15T20:08:19.070 回答