setdomainname(2) NIS ドメイン名の取得・設定をする

Other Alias

getdomainname

書式

#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():

_BSD_SOURCE || (_XOPEN_SOURCE && _XOPEN_SOURCE < 500)

説明

これらの関数は、ホストシステムの NIS ドメイン名を取得・変更するために使われる。

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

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

返り値

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

エラー

setdomainname() は以下のエラーで失敗する可能性がある。
EFAULT
name がユーザアドレス空間の外を指した。
EINVAL
len が負であるか、長すぎる。
EPERM
setdomainname() において、呼び出した人に特権がない (Linux では CAP_SYS_ADMIN ケーパビリティ (capability) がない)。

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

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

準拠

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

注意

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

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

この文書について

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