GETDOMAINNAME(2)

名前
getdomainname, setdomainname - NIS ドメイン名の取得・設定をする

書式
#include <unistd.h>

int getdomainname(char *name, size_t len);
int setdomainname(const char *name, size_t len);

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

getdomainname(), setdomainname():
    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 functions are used to access or to change the NIS domain name of the host system. More precisely, they operate on the NIS domain name associated with the calling process's UTS namespace.

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

getdomainname() は、NULL 終端されたドメイン名を、 len バイトの長さの文字配列 name に格納して返す。ヌル終端されたドメイン名が len バイトより長い場合、 getdomainname() は、(glibc では) 始めの len バイトを返し、(libc では) エラーとなる。

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

エラー
setdomainname() は以下のエラーで失敗する可能性がある。

EFAULT
    name がユーザーアドレス空間の外を指した。

EINVAL
    len が負であるか、長すぎる。

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

getdomainname() は以下のエラーで失敗する可能性がある。

EINVAL
    libc での getdomainname() において、 name が NULL であるか、 len バイトより長い。

準拠
POSIX では、これら関数は定義されていない。

注意
Linux 1.0 以降では、ドメイン名の長さの上限は 終端のヌルバイトを含めて 64 バイトである。 もっと古いカーネルでは 8 バイトであった。

(x86 を含む) Linux のほとんどのアーキテクチャーでは、 getdomainname() というシステムコールは存在しない。 その代わり、glibc で getdomainname() がライブラリ関数として実装されており、この関数は uname(2) の呼び出しで返された domainname フィールドのコピーを返す。

関連項目
 gethostname(2), sethostname(2), uname(2), uts_namespaces(7)

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