EN JA
SOCKETPAIR(2)
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_NONBLOCKSOCK_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/ に書かれている。
2008-10-11 Linux