SOCKETPAIR(2) |
Linux Programmer's Manual |
SOCKETPAIR(2) |
名前
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) を参照のこと。
新しいソケットの参照に使用するディスクリプタ (descriptor) が
sv[0] と
sv[1] に返される。二つのソケットは全く同じである。
返り値
成功した場合にはゼロが返される。エラー時には-1 が返され、
errno が適切に設定される。
エラー
-
EAFNOSUPPORT
-
このマシンでは指定されたアドレス・ファミリがサポートされていない。
-
EFAULT
-
アドレス
sv がこのプロセスで使えるアドレス空間を指定していない。
-
EMFILE
-
このプロセスが使用しているディスクリプタの数が多すぎる。
-
ENFILE
-
オープンされたファイルの総数がシステム全体の上限に達していた。
-
EOPNOTSUPP
-
指定されたプロトコルではソケットのペアの作成がサポートされていない。
-
EPROTONOSUPPORT
-
このマシンでは指定されたプロトコルがサポートされていない。
準拠
4.4BSD, POSIX.1-2001.
socketpair() 関数コールは 4.2BSD で現われた。一般に (System V の変種を含めて) BSD のソケット層のクローンをサポートしている、BSD 以外のシステムと、互いに移植性がある。
注意
Linux では、この関数でサポートされているドメインは
AF_UNIX (または同義語である
AF_LOCAL) だけである。 (ほとんどの実装で同じ制限がある)
Linux 2.6.27 以降では、
socketpair() は、フラグ
SOCK_NONBLOCK と
SOCK_CLOEXEC に対応している。フラグの説明は
socket(2) を参照のこと。
POSIX.1-2001 では
<sys/types.h> のインクルードは必須とされておらず、 Linux ではこのヘッダファイルは必要ではない。しかし、歴史的には、いくつかの実装 (BSD 系) でこのヘッダファイルが必要であり、移植性が必要なアプリケーションではこのファイルをインクルードするのが賢明であろう。
関連項目
pipe(2),
read(2),
socket(2),
write(2),
socket(7),
unix(7)
この文書について
この man ページは Linux
man-pages プロジェクトのリリース 3.51 の一部である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。