4

mpi アプリケーションですべてのノードのホスト名を収集しています。gethostname を使用していますが、結果の文字列を保存するのに十分なスペースがあることを確認したいと考えています。マシンの名前が必要で、そこから解析する必要がないため、特に MPI の getprocessorname を避けています。

選択肢は2つあるようですが、

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のmanページからgethostname()(POSIX spexを引用):

SUSv2 では、「ホスト名は 255 バイトに制限されている」ことが保証されています。POSIX.1-2001 は、「ホスト名 (終端の null バイトを含まない) はHOST_NAME_MAXバイトに制限される」ことを保証します。Linux では、HOST_NAME_MAXは値 64 で定義されます。これは、Linux 1.0 以降の制限でした (以前のカーネルでは 8 バイトの制限が課されていました)。


現在の POSIX 仕様については、こちらをお読みください。制限としても言及HOST_NAME_MAXされています。(これは、255 が制限として定義されていた以前のバージョンの POSIX とは異なります。)

于 2013-09-17T13:52:37.340 に答える