Voltar à lista
Linux x86_64Rede & sockets#43

accept

Aceita a próxima conexão pendente na fila de um socket em modo de escuta, criando um novo socket conectado.

Descrição

O socket original (passado a `listen`) continua ouvindo por novas conexões; `accept` devolve um socket separado, dedicado à conversa com aquele cliente específico.

Header: sys/socket.hman 2

Diferença entre versões

`accept4` (syscall 288) é preferível quando se deseja aplicar SOCK_NONBLOCK/SOCK_CLOEXEC atomicamente no novo socket.

Assinatura

int accept(int sockfd, struct sockaddr * addr, socklen_t * addrlen);

Parâmetros

ParâmetroTipoDescrição
sockfdintSocket em modo de escuta.
addrstruct sockaddr *Se não for NULL, recebe o endereço do par remoto.
addrlensocklen_t *Tamanho de `addr`; atualizado com o tamanho real do endereço.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1sockfdint
rsiargumento 2addrstruct sockaddr *
rdxargumento 3addrlensocklen_t *

Valor de retorno

Um novo descritor de socket conectado em sucesso; -1 em erro, com errno definido.

Códigos de erro (errno)

EAGAIN(11)
Recurso temporariamente indisponível (tente novamente); também conhecido como EWOULDBLOCK.
ECONNABORTED(103)
Conexão abortada localmente.
EINTR(4)
Chamada interrompida por um sinal.
EMFILE(24)
Limite de arquivos abertos do processo atingido.
ENFILE(23)
Limite de arquivos abertos no sistema atingido.
EPERM(1)
Operação não permitida (falta de privilégio).
EPROTO(71)
Erro de protocolo.

Relacionadas