Voltar à lista
Linux x86_64Rede & sockets#53

socketpair

Cria um par de sockets já conectados entre si, tipicamente AF_UNIX, para IPC local.

Descrição

Forma comum de estabelecer um canal bidirecional entre processo pai e filho após um `fork`, sem precisar de bind/listen/accept.

Header: sys/socket.hman 2

Assinatura

int socketpair(int domain, int type, int protocol, int[2] sv);

Parâmetros

ParâmetroTipoDescrição
domainintFamília de endereços, geralmente AF_UNIX.
typeintSOCK_STREAM ou SOCK_DGRAM, opcionalmente com SOCK_NONBLOCK/SOCK_CLOEXEC.
protocolintGeralmente 0.
svint[2]Recebe os dois descritores de socket conectados entre si.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1domainint
rsiargumento 2typeint
rdxargumento 3protocolint
r10argumento 4svint[2]

Valor de retorno

0 em sucesso; -1 em erro, com errno definido.

Códigos de erro (errno)

EAFNOSUPPORT(97)
Família de endereços não suportada pelo protocolo.
EMFILE(24)
Limite de arquivos abertos do processo atingido.
ENFILE(23)
Limite de arquivos abertos no sistema atingido.
EOPNOTSUPP(95)
Operação não suportada nesse socket/arquivo (também ENOTSUP).

Relacionadas