SHUTDOWN(2)

名前
shutdown - 全二重接続の一部を閉じる

書式
#include <sys/socket.h>

int shutdown(int sockfd, int how);

説明
shutdown() は、 sockfd に関連づけられているソケットによる全二重接続 (full-duplex connection) の一部または全てを閉じる。 how が SHUT_RD ならば、それ以降の受信を禁止する。 how が SHUT_WR ならば、それ以降の送信を禁止する。 how が SHUT_RDWR ならば、それ以降の送受信を禁止する。

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

エラー

EBADF
    sockfd が有効なファイルディスクリプターでない。

EINVAL
    how に無効な値が指定された (バグが参照)。

ENOTCONN
    指定されたソケットは接続されていない。

ENOTSOCK
    ファイルディスクリプター sockfd がソケットを参照していない。

準拠
POSIX.1-2001, POSIX.1-2008, 4.4BSD (shutdown() は 4.2BSD で初めて登場した)。

注意
SHUT_RD, SHUT_WR, SHUT_RDWR の各定数 (それぞれ 0, 1, 2 の値を持つ) は glibc-2.1.91 以降、 <sys/socket.h> で定義されている。

バグ
Checks for the validity of how are done in domain-specific code, and before Linux 3.7 not all domains performed these checks. Most notably, UNIX domain sockets simply ignored invalid values. This problem was fixed for UNIX domain sockets in Linux 3.7.

関連項目
close(2), connect(2), socket(2), socket(7)

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