EN JA
SHUTDOWN(2)
SHUTDOWN(2) FreeBSD System Calls Manual SHUTDOWN(2)

名称

shutdownソケットで、送信および/または受信を無効にする

ライブラリ

Standard C Library (libc, -lc)

書式

#include < sys/types.h>
#include < sys/socket.h>

int
shutdown( int s, int how);

解説

shutdown() システムコールは、ソケットで送信または受信を無効にします。引数 how でシャットダウンのタイプを指定します。可能な値は次の通りです:
SHUT_RD
これ以降の受信ができなくなります。
SHUT_WR
これ以降の送信ができなくなります。これによって、ソケット s のプロトコルファミリへの特有のアクションが起こります。 「実装に関する注」 を参照してください。
SHUT_RDWR
これ以降の送受信ができなくなります。 SHUT_WR の意味を含みます。

ファイル記述子 sSOCK_STREAM ソケットに関連しているなら、全二重接続のすべてまたは一部が、シャットダウンされます。

実装に関する注

次のプロトコル特有のアクションは、ファイル記述子 s に関連しているソケットの特性に基づいて、 SHUT_WR (と、潜在的に SHUT_RDWR も) の使用に適用します。
ドメイン タイプ プロトコル 返り値とアクション
PF_INET SOCK_DGRAM IPPROTO_SCTP -1 で返る。グローバル変数 errnoEOPNOTSUPP に設定されます。
PF_INET SOCK_DGRAM IPPROTO_UDP 0 で返る。 ICMP メッセージは、生成されません。
PF_INET SOCK_STREAM IPPROTO_SCTP 0 で返る。キューに入れられたデータを送信し、アソシエーションを破壊します。
PF_INET SOCK_STREAM IPPROTO_TCP 0 で返る。キューに入れられたデータを送信し、ACK をウェートし (待ち)、次に、FIN を送信します。
PF_INET6 SOCK_DGRAM IPPROTO_SCTP -1 で返る。グローバル変数 errnoEOPNOTSUPP に設定されます。
PF_INET6 SOCK_DGRAM IPPROTO_UDP 0 で返る。 ICMP メッセージは、生成されません。
PF_INET6 SOCK_STREAM IPPROTO_SCTP 0 で返る。キューに入れられたデータを送信し、アソシエーションを破壊します。
PF_INET6 SOCK_STREAM IPPROTO_TCP 0 で返る。キューに入れられたデータを送信し、ACK をウェートし (待ち)、次に、FIN を送信します。

戻り値

The shutdown() function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.

エラー

shutdown() システムコールは、次の場合に失敗します:
[ EBADF]
引数 s が有効な記述子ではありません。
[ EINVAL]
引数 how が有効な値ではありません。
[ EOPNOTSUPP]
ファイル記述子 s に関連しているソケットが、この操作をサポートしていません。
[ ENOTCONN]
s 引数が、接続されなかった SOCK_STREAM ソケットを指定しています。
[ ENOTSOCK]
引数 s はソケットを参照していません。

規格

shutdown() システムコールは、完成時には IEEE Std 1003.1g-2000 (“POSIX.1g”) に適合しています。

歴史

shutdown() システムコールは、 4.2BSD で登場しました。定数 SHUT_RD, SHUT_WRSHUT_RDWR は、 IEEE Std 1003.1g-2000 (“POSIX.1g”) に追加されました。

作者

このマニュアルページは、 shutdown() が PF_INETPF_INET6 ソケットでどのように振る舞うかを反映するために Bruce M. Simpson <bms@FreeBSD.org>によって更新されました。

バグ

ICMP の“ port unreachable” (到達不可能なポート) メッセージは shutdown() が呼び出された後に s がバインドされているローカルポートで受信されたデータグラムに対応して生成されるべきです。
March 5, 2007 FreeBSD