Linux repositories inspector
Linux
2019-03-06

man-pages-ru

Russian man pages from the Linux Documentation Project

manpages-dev

Manual pages about using GNU/Linux for development

man-pages

Linux kernel and C library user-space interface documentation

ИМЯ

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 не изменяется.
В Linux (и других системах) socketpair() не изменяет sv при ошибке. Требование стандартизации этого поведения было добавлено в POSIX.1-2016.

ОШИБКИ

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

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

POSIX.1-2001, POSIX.1-2008, 4.4BSD. Вызов socketpair() впервые появился в 4.2BSD. Обычно он переносим в/из не-BSD систем на уровне сокетов BSD (включая варианты System V).

ЗАМЕЧАНИЯ

В Linux единственными поддерживаемыми доменами для этого вызова являются AF_UNIX (или его синоним AF_LOCAL) и AF_TIPC (начиная с Linux 4.12).
Начиная с Linux 2.6.27, в аргументе type вызова socketpair() поддерживаются флаги SOCK_NONBLOCK и SOCK_CLOEXEC, описанные в socket(2).
В POSIX.1 не требуется включение <sys/types.h>, и этот заголовочный файл не требуется в Linux. Однако, для некоторых старых реализаций (BSD) требует данный файл, и в переносимых приложениях для предосторожности, вероятно, лучше его указать.

СМОТРИТЕ ТАКЖЕ

⇧ Top