socketpair - создает
пару
присоединённых
сокетов
Standard C library (
libc,
-lc)
#include <sys/socket.h>
int socketpair(int domain, int type, int protocol, int sv[2]);
Вызов
socketpair()
создает
пару
неименованых
присоединённых
сокетов в
заданном
домене
domain
заданного
типа
type,
используя
(при
необходимости)
заданный
протокол
protocol.
Подробнее
об этих
аргументах
можно
узнать в
socket(2).
The file descriptors used in referencing the new sockets are returned in
sv[0] and
sv[1]. The two sockets are indistinguishable.
On success, zero is returned. On error, -1 is returned,
errno is set to
indicate the error, and
sv is left unchanged
On Linux (and other systems),
socketpair() does not modify
sv on
failure. A requirement standardizing this behavior was added in POSIX.1-2008
TC2.
- 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).
pipe(2),
read(2),
socket(2),
write(2),
socket(7),
unix(7)
Русский
перевод
этой
страницы
руководства
был сделан
Alexander Golubev <
[email protected]>, Azamat Hackimov
<
[email protected]>, Hotellook, Nikita
<
[email protected]>, Spiros Georgaras <
[email protected]>, Vladislav
<
[email protected]>, Yuri Kozlov <
[email protected]>
и Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]