GETHOSTNAME
Section: Linux Programmer's Manual (2)
Updated: 2008-11-27
Index
JM Home Page
roff page
名前
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():
_BSD_SOURCE || _XOPEN_SOURCE >= 500
sethostname():
_BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)
説明
これらのシステムコールは、現在のプロセッサのホスト名を取得・変更するために
使用される。
sethostname()
は、ホスト名を、文字配列
name
で指定された値に設定する。
引き数
len
には、
name
のバイト数を指定する
(そのため、
name
では文字列終端の NULL バイトは必要ない)。
gethostname()
は、NULL 終端されたホスト名を、
len
バイトの長さの文字配列
name
に格納して返す。
NULL 終端されたホスト名が格納先のバッファよりも長い場合は、
ホスト名は切り詰められ、エラーは返されない (下記の「注意」の節を参照)。
POSIX.1-2001 では、結果の切り詰めが発生した場合に、
返されたバッファに終端の NULL バイトが含まれているかどうかは
規定されていない。
返り値
成功した場合 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 では「ホスト名 (終端の NULL バイトは含まない) が
HOST_NAME_MAX
バイトに制限される」ことを保証している。
Linux では、
HOST_NAME_MAX
は 64 に定義されており、
Linux 1.0 以降ではこれが上限となってきた
(もっと古いカーネルでは 8 バイトの上限が適用されていた)。
glibc での注意
GNU C ライブラリは、
gethostname()
システムコールを利用していない。その代わり、
gethostname()
をライブラリ関数として実装しており、
この関数は
uname(2)
を呼び出し、
uname(2)
が返した
nodename
フィールド (の最大
len
バイト) を
name
にコピーする。
コピーを行った際に、この関数は
nodename
の長さが
len
以上かの確認を行い、
len
以上の場合には -1 を返し、
errno
に
ENAMETOOLONG
を設定する。
この場合、返された
name
には終端の NULL バイトは含まれない。
バージョン 2.2 より前の glibc
では、
nodename
の長さが
len
以上の場合の扱いが異なる;
len
以上の場合には、
name
には何もコピーせず、関数は -1 を返し、
errno
に
ENAMETOOLONG
を設定する。
関連項目
getdomainname(2),
setdomainname(2),
uname(2)
Index
- 名前
-
- 書式
-
- 説明
-
- 返り値
-
- エラー
-
- 準拠
-
- 注意
-
- glibc での注意
-
- 関連項目
-
This document was created by
man2html,
using the manual pages.
Time: 03:26:43 GMT, April 25, 2010