SHUTDOWN(2) |
FreeBSD System Calls Manual |
SHUTDOWN(2) |
名称
shutdown —
ソケットで、送信および/または受信を無効にする
ライブラリ
Standard C Library (libc, -lc)
解説
shutdown() システムコールは、ソケットで送信または受信を無効にします。引数
how でシャットダウンのタイプを指定します。可能な値は次の通りです:
-
SHUT_RD
-
これ以降の受信ができなくなります。
-
SHUT_WR
-
これ以降の送信ができなくなります。これによって、ソケット
s のプロトコルファミリへの特有のアクションが起こります。
「実装に関する注」 を参照してください。
-
SHUT_RDWR
-
これ以降の送受信ができなくなります。
SHUT_WR の意味を含みます。
ファイル記述子 s が SOCK_STREAM ソケットに関連しているなら、全二重接続のすべてまたは一部が、シャットダウンされます。
実装に関する注
次のプロトコル特有のアクションは、ファイル記述子
s に関連しているソケットの特性に基づいて、
SHUT_WR (と、潜在的に
SHUT_RDWR も) の使用に適用します。
ドメイン |
タイプ |
プロトコル |
返り値とアクション |
PF_INET |
SOCK_DGRAM |
IPPROTO_SCTP |
-1 で返る。グローバル変数 errno は EOPNOTSUPP に設定されます。 |
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 で返る。グローバル変数 errno は EOPNOTSUPP に設定されます。 |
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_WR と
SHUT_RDWR は、 IEEE Std 1003.1g-2000 (“POSIX.1g”) に追加されました。
作者
このマニュアルページは、
shutdown() が
PF_INET と
PF_INET6 ソケットでどのように振る舞うかを反映するために
Bruce M. Simpson <bms@FreeBSD.org>によって更新されました。
バグ
ICMP の“
port unreachable
” (到達不可能なポート) メッセージは
shutdown() が呼び出された後に
s がバインドされているローカルポートで受信されたデータグラムに対応して生成されるべきです。