Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all
名前
getsockopt, setsockopt - ソケットのオプションの設定と取得を行なう
書式
#include <sys/types.h> /* 「注意」参照 */ #include <sys/socket.h> int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen); int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen);
説明
getsockopt() と setsockopt() は、ファイルディスクリプター socket で参照されるソケットに 関連するオプションの操作を行う。 オプションは複数のプロトコル層(level)に存在するかもしれな いが、 これらは常に最上位のソケット層へと設定される。 ソケットオプションを操作する際には、オプションの層 (level) と オプションの名前を指定しなけ ればならない。 ソケット API 層でオプションを操作する為には、 level を SOL_SOCKET に指定す る。 他の全ての層でオプションを操作する為には、与えられたオプションの 制御主体となるプロト コルのプロトコル番号を指定する。例えば、 オプションが TCP プロトコルで解釈されるべきことを 指示するには、 level に TCP のプロトコル番号を指定しなければならない。 getprotoent(3) を 参照すること。 optval と optlen 引数は setsockopt() のオプションの値にアクセスするために用いられる。 getsockopt() では要求したオプションの値を返すためのバッファーを指定する。 getsockopt() では optlen は値と結果両用の引数で、最初に optval の指しているバッファーのサイズを与え、実 際に返される値のサイズに 書き換えられる。もしオプション値を与えず、返されもしない場合には optval は NULL でも良い。 optname および指定されたオプションは解釈されずに、適切なプロトコルモジュールに 渡されて解 釈される。インクルードファイル <sys/socket.h> には後述のソケット層のオプションの定義が含ま れている。 他のプロトコル層では名前や形式は異なる。 マニュアルのセクション 4 の適切なエン トリーを参照すること。 ほとんどのソケット層のオプションは optval に int 引数を利用する。 setsockopt() で、二 値(boolean)オプションを有効(enable)にするにはゼロ以外を指定し、 無効(disable)にするにはゼ ロを指定する。 利用可能なソケットオプションの説明に関しては、 socket(7) と適切なプロトコルの man ページ を参照のこと。
返り値
On success, zero is returned for the standard options. On error, -1 is returned, and errno is set appropriately. Netfilter allows the programmer to define custom socket options with associated handlers; for such options, the return value on success is the value returned by the handler.
エラー
EBADF 引数 sockfd は有効なファイルディスクリプターでない。 EFAULT optval で指定されたアドレスがプロセスのアドレス空間の有効な部分ではない。 getsockopt() の場合、 optlen がプロセスのアドレス空間の有効な部分でない場合にもこ のエラーが返される。 EINVAL setsockopt() で option が不正である。 optval に無効な値が指定された場合にも、この エラーが発生する可能性がある (例えば、 ip(7) に説明がある IP_ADD_MEMBERSHIP オプ ションなど)。 ENOPROTOOPT 指定された層(level)にはこのオプションは存在しない。 ENOTSOCK ファイルディスクリプター sockfd がソケットを参照していない。
準拠
POSIX.1-2001, POSIX.1-2008, SVr4, 4.4BSD (これらのシステムコールは 4.2BSD で最初に現れた)
注意
POSIX.1 では <sys/types.h> のインクルードは必須とされておらず、 Linux ではこのヘッダーファ イルは必要ではない。 しかし、歴史的には、いくつかの実装 (BSD 系) でこのヘッダーファイルが 必要であり、移植性が必要なアプリケーションではこのファイルを インクルードするのが賢明であ ろう。 For background on the socklen_t type, see accept(2).
バグ
ソケットのオプションのいくつかはシステムのより低い層で 処理されるべきである。
関連項目
ioctl(2), socket(2), getprotoent(3), protocols(5), ip(7), packet(7), socket(7), tcp(7), udp(7), unix(7)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの 説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。