Voltar à lista
Linux x86_64IPC & sincronização#243

mq_timedreceive

Recebe a mensagem de maior prioridade de uma fila POSIX, com timeout opcional.

Descrição

Contraparte de leitura de `mq_timedsend`.

Header: mqueue.hman 2Desde o kernel 2.6.6

Assinatura

ssize_t mq_timedreceive(
    mqd_t mqdes,
    char * msg_ptr,
    size_t msg_len,
    unsigned int * msg_prio,
    const struct timespec * abs_timeout
);

Parâmetros

ParâmetroTipoDescrição
mqdesmqd_tDescritor da fila.
msg_ptrchar *Buffer que recebe a mensagem.
msg_lensize_tCapacidade de `msg_ptr`; deve ser >= mq_msgsize da fila.
msg_priounsigned int *Se não for NULL, recebe a prioridade da mensagem recebida.
abs_timeoutconst struct timespec *Instante absoluto limite; NULL bloqueia indefinidamente.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1mqdesmqd_t
rsiargumento 2msg_ptrchar *
rdxargumento 3msg_lensize_t
r10argumento 4msg_priounsigned int *
r8argumento 5abs_timeoutconst struct timespec *

Valor de retorno

Número de bytes recebidos 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.
EINTR(4)
Chamada interrompida por um sinal.
EMSGSIZE(90)
Mensagem grande demais para o socket.
ETIMEDOUT(110)
Conexão expirou (timeout).

Relacionadas