Man page - sethostname(2)

Packages contains this manual

Available languages:

en pt_BR pl nl ja ru ro de

Manual

GETHOSTNAME

名 前
書 式
説 明
返 り 値
エ ラ ー
準 拠
注 意
C ラ イ ブ ラ リ と カ ー ネ ル の 違 い
関 連 項 目
こ の 文 書 に つ い て

名 前

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 ():
glibc 2.21 以 降 :
_DEFAULT_SOURCE
glibc 2.19 と 2.20:
_DEFAULT_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)
glibc 2.19 以 前 :
_BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)

説 明

These system calls are used to access or to change the system hostname. More precisely, they operate on the hostname associated with the calling process’s UTS namespace.

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

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

返 り 値

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

エ ラ ー

EFAULT

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

EINVAL

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

ENAMETOOLONG

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

EPERM

For sethostname (), the caller did not have the CAP_SYS_ADMIN capability in the user namespace associated with its UTS namespace (see namespaces (7)).

準 拠

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

注 意

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

C ラ イ ブ ラ リ と カ ー ネ ル の 違 い

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

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

関 連 項 目

hostname (1), getdomainname (2), setdomainname (2), uname (2), uts_namespaces (7)

こ の 文 書 に つ い て

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