kazmax - Linux で自宅サーバー

gethostname - システムコールの説明 - Linux コマンド集 一覧表

  1. 名前
  2. 書式
  3. 説明
  4. 返り値
  5. エラー
  6. 準拠
  7. 注意
  8. glibc での注意
  9. 関連項目

名前

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

書式

#include <unistd.h>
int gethostname(char * name , size_t len );
int sethostname(const char * name , size_t len );

説明

これらのシステムコールは、現在のプロセッサのホスト名を取得・変更するために 使用される。 gethostname ()システムコールは、(以前に sethostname ()で設定された) NULL 終端されたホスト名を、 長さ len バイトの配列 name に返す。 配列の長さが NULL 終端されたホスト名に足りない場合、 エラーは返されないが、ホスト名は切り詰められる。 切り詰められたホスト名が NULL 終端されるかどうかは指定されていない。

返り値

成功した場合 0 が返る。失敗した場合 -1 が返り、 errno がエラーの内容に従って設定される。

エラー

EFAULT
name が不正なアドレスである。
EINVAL
len が負である。または、 sethostname ()において len が許容された最大サイズを越えている。 または、Linux/i386 の gethostname ()において len が実際の値よりも小さい (最後のケースでは、glib 2.1 だと ENAMETOOLONG が返される)。
EPERM
sethostname ()において、呼び出した人が CAP_SYS_ADMIN ケーパビリティ (capability) を持っていなかった。

準拠

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

注意

SUSv2 では「ホスト名が 255 バイトに制限される」ことを保証している。 POSIX.1-2001 では「ホスト名 (終端の NULL バイトは含まない) が HOST_NAME_MAX バイトに制限される」ことを保証している。

glibc での注意

GNU C ライブラリは、 gethostname ()をライブラリ関数として実装しており、 この関数は   uname (2) を呼び出し、   uname (2) が返した nodename フィールド (の最大 len バイト) を name にコピーする。 コピーを行った際に、この関数は nodename の長さが len 以上かの確認を行い、 len 以上の場合には -1 を返し、 errnoENAMETOOLONG を設定する。 バージョン 2.2 より前の glibc では、 nodename の長さが len 以上の場合の扱いが異なる; len 以上の場合には、 name には何もコピーせず、関数は -1 を返し、 errnoENAMETOOLONG を設定する。

関連項目

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