socketpair -
接続されたソケットのペアを作成する
#include <sys/types.h> /*
「注意」参照 */
#include <sys/socket.h>
int socketpair(int domain, int type, int
protocol , int sv[2]);
socketpair()
は、指定されたドメイン
domain に指定された種類
type
で名前のないソケットの接続されたペアを作成する。
protocol
が指定されると、このプロトコルを用いる。
これらの引数の詳細は
socket(2) を参照のこと。
The file descriptors used in referencing the new sockets are returned in
sv[0] and
sv[1]. The two sockets are indistinguishable.
On success, zero is returned. On error, -1 is returned,
errno is set
appropriately, and
sv is left unchanged
On Linux (and other systems),
socketpair() does not modify
sv on
failure. A requirement standardizing this behavior was added in POSIX.1-2008
TC2.
- EAFNOSUPPORT
- このマシンでは指定されたアドレスファミリーがサポートされていない。
- EFAULT
- アドレス sv
がこのプロセスで使えるアドレス空間を指定していない。
- EMFILE
- 1プロセスがオープンできるファイルディスクリプター数の上限に達した。
- ENFILE
- オープンされたファイルの総数がシステム全体の上限に達していた。
- EOPNOTSUPP
- 指定されたプロトコルではソケットのペアの作成がサポートされていない。
- EPROTONOSUPPORT
- このマシンでは指定されたプロトコルがサポートされていない。
POSIX.1-2001, POSIX.1-2008, 4.4BSD.
socketpair() は 4.2BSD
で登場した。一般に
(System V の変種を含めて) BSD
のソケット層のクローンをサポートしている、BSD
以外のシステムと、
互いに移植性がある。
On Linux, the only supported domains for this call are
AF_UNIX (or
synonymously,
AF_LOCAL) and
AF_TIPC (since Linux 4.12).
Since Linux 2.6.27,
socketpair() supports the
SOCK_NONBLOCK and
SOCK_CLOEXEC flags in the
type argument, as described in
socket(2).
POSIX.1 では
<sys/types.h>
のインクルードは必須とされておらず、
Linux
ではこのヘッダーファイルは必要ではない。
しかし、歴史的には、いくつかの実装
(BSD 系)
でこのヘッダーファイルが
必要であり、移植性が必要なアプリケーションではこのファイルを
インクルードするのが賢明であろう。
pipe(2),
read(2),
socket(2),
write(2),
socket(7),
unix(7)
この man ページは Linux
man-pages
プロジェクトのリリース
5.10
の一部である。プロジェクトの説明とバグ報告に関する情報は
https://www.kernel.org/doc/man-pages/
に書かれている。