4

我正在收集 mpi 应用程序中所有节点的主机名。我正在使用 gethostname 并且我想确保我有足够的空间来存储结果字符串。我特别避免使用 MPI 的 getprocessorname,因为我想要机器的名称,我不想从中解析它。

似乎有两种选择,

bits/local_lim.h:#define HOST_NAME_MAX      64
bits/posix1_lim.h:#define _POSIX_HOST_NAME_MAX  255 

各有什么优势?我应该直接包含这些标题之一,还是应该在其他一些包含之前使用 posix 标志?

4

1 回答 1

3

为了保持便携性,您应该坚定地坚持使用HOST_NAME_MAX.

来自Linux 手册页gethostname()(引用 POSIX spex):

SUSv2 保证“主机名限制为 255 个字节”。POSIX.1-2001 保证“主机名(不包括终止的空字节)仅限于HOST_NAME_MAX字节”。在 Linux 上,HOST_NAME_MAX定义为 64,这是自 Linux 1.0 以来的限制(早期的内核施加了 8 个字节的限制)。


在此处阅读当前的 POSIX 规范,其中也提到HOST_NAME_MAX了限制。(这与将 255 定义为限制的 POSIX 早期版本不同。)

于 2013-09-17T13:52:37.340 回答