Provided by: manpages-ja-dev_0.5.0.0.20180315+dfsg-1_all bug

名前

       gethostname, sethostname - ホスト名の取得・設定をする

書式

       #include <unistd.h>

       int gethostname(char *name, size_t len);
       int sethostname(const char *name, size_t len);

   glibc 向けの機能検査マクロの要件 (feature_test_macros(7)  参照):

       gethostname():
           glibc 2.12 以降: _BSD_SOURCE || _XOPEN_SOURCE >= 500
           || /* glibc 2.12 以降: */ _POSIX_C_SOURCE >= 200112L
       sethostname():
           _BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)

説明

       これらのシステムコールは、現在のプロセッサのホスト名を取得・変更するために 使用される。

       sethostname()   は、ホスト名を、文字配列 name で指定された値に設定する。 引き数 len には、
       name のバイト数を指定する (そのため、 name では文字列終端のヌルバイトは必要ない)。

       gethostname()  は、NULL 終端されたホスト名を、 len バイトの長さの文字配列 name  に格納して
       返す。ヌル終端されたホスト名が格納先のバッファーよりも長い場合は、    ホスト名は切り詰めら
       れ、エラーは返されない (下記の「注意」の節を参照)。 POSIX.1-2001  では、結果の切り詰めが発
       生した場合に、 返されたバッファーに終端のヌルバイトが含まれているかどうかは 規定されていな
       い。

返り値

       成功した場合は 0 が返される。エラーの場合は -1 が返され、 errno が適切に設定される。

エラー

       EFAULT name が不正なアドレスである。

       EINVAL len が負である。 sethostname()  において len が許容された最大サイズを越えている。

       ENAMETOOLONG
              (glibc gethostname()  で)  len が実際のホスト名の長さよりも小さい (glibc バージョン
              2.1 より前では、この状況で EINVAL が使用される)。

       EPERM  sethostname()   において、呼び出した人が  CAP_SYS_ADMIN ケーパビリティ (capability)
              を持っていなかった。

準拠

       SVr4, 4.4BSD  (これらのインターフェースは  4.2BSD  で初めて登場した)。  POSIX.1-2001  では
       gethostname()  については規定しているが、 sethostname()  は規定していない。

注意

       SUSv2  では「ホスト名が 255 バイトに制限される」ことを保証している。 POSIX.1-2001 では「ホ
       スト名 (終端のヌルバイトは含まない) が HOST_NAME_MAX  バイトに制限される」ことを保証してい
       る。  Linux  では、  HOST_NAME_MAX は 64 に定義されており、 Linux 1.0 以降ではこれが上限と
       なってきた (もっと古いカーネルでは 8 バイトの上限が適用されていた)。

   C ライブラリとカーネル ABI の違い
       GNU   C   ライブラリは、    gethostname()     システムコールを利用していない。その代わり、
       gethostname()   をライブラリ関数として実装しており、   この関数は  uname(2)   を呼び出し、
       uname(2)  が返した nodename フィールド (の最大 len バイト) を name にコピーする。 コピーを
       行った際に、この関数は nodename の長さが len 以上かの確認を行い、 len 以上の場合には -1 を
       返し、 errnoENAMETOOLONG を設定する。 この場合、返された name には終端のヌルバイトは含
       まれない。

       バージョン  2.2  より前の glibc では、 nodename の長さが len 以上の場合の扱いが異なる; len
       以上の場合には、 name には何もコピーせず、関数は -1 を返し、 errnoENAMETOOLONG  を設定
       する。

関連項目

       getdomainname(2), setdomainname(2), uname(2)

この文書について

       この  man ページは Linux man-pages プロジェクトのリリース 3.79 の一部 である。プロジェクト
       の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。