Scroll to navigation

SOCKETPAIR(2) Руководство программиста Linux 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).

Дескрипторы, используемые как ссылки на новые сокеты, возвращаются в sv[0] и sv[1]. Никаких различий между этими двумя сокетами нет.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

При успешном выполнении возвращается 0. В случае ошибки возвращается -1, а errno устанавливается в соответствующее значение.

ОШИБКИ

Заданное семейство адресов не поддерживается в этой машине.
Адрес sv не ссылается на адресное пространство процесса.
Слишком много файловых дескрипторов используется процессом.
Достигнуто максимальное количество открытых файлов в системе.
Заданный протокол не поддерживает создание пар сокетов.
Заданный протокол не поддерживается на этой машине.

СООТВЕТСТВИЕ СТАНДАРТАМ

4.4BSD, POSIX.1-2001. Системный вызов socketpair() впервые появился в 4.2BSD. Обычно он переносится в/из не-BSD систем, поддерживающих клоны слоя сокетов BSD (включая варианты System V).

ЗАМЕЧАНИЯ

В 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)

2008-10-11 Linux