Главная » 2017 » Ноябрь » 24 » man 2 socketpair
05:31
man 2 socketpair

SEO sprint - Всё для максимальной раскрутки!





ИМЯ


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
устанавливается в соответствующее значение.

В 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). (Большинство реализаций имеют такое же ограничение.)

Начиная с Linux 2.6.27, в аргументе type вызова socketpair() поддерживаются флаги
SOCK_NONBLOCK и SOCK_CLOEXEC, описанные в socket(2).

В POSIX.1 не требуется включение <sys/types.h>, и этот заголовочный файл не требуется в
Linux. Однако, для некоторых старых реализаций (BSD) требует данный файл, и в переносимых
приложениях для предосторожности, вероятно, лучше его указать.



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


Категория: (2) Системные вызовы ядра (функции языка Си) | Просмотров: 479 | Добавил: Администратор | Рейтинг: 0.0/0
Всего комментариев: 0
avatar