我正在收集mpi应用程序中所有节点的主机名。我正在使用gethostname,我想确保我有足够的空间来存储结果字符串。我特别避免使用MPI的getprocessorname,因为我想要机器的名称而且我不想从中解析它。
似乎有两种选择,
bits/local_lim.h:#define HOST_NAME_MAX 64
bits/posix1_lim.h:#define _POSIX_HOST_NAME_MAX 255
每个有什么好处?我应该直接包含其中一个标题,还是有一个posix标志我应该在其他包含之前使用?
答案 0 :(得分:3)
为了保持便携性,你应该坚持HOST_NAME_MAX
。
来自Linux man-page for gethostname()
(引用POSIX spex):
SUSv2保证“主机名限制为255个字节”。 POSIX.1-2001保证“主机名(不包括主机名) 终止空字节)仅限于 HOST_NAME_MAX 字节“。开 Linux, HOST_NAME_MAX 的定义值为64,该值为 自Linux 1.0以来的限制(早期内核强制限制为8个字节)。
请read here for the current POSIX specification,其中还提到HOST_NAME_MAX
作为限制。 (这与POSIX的早期版本不同,其中255被定义为限制。)