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

msgrcv

Recebe (e remove) uma mensagem de uma fila de mensagens System V.

Descrição

Pode filtrar por `msgtyp` para receber seletivamente mensagens de um tipo específico, em vez de sempre a mais antiga.

Header: sys/msg.hman 2

Assinatura

ssize_t msgrcv(int msqid, void * msgp, size_t msgsz, long msgtyp, int msgflg);

Parâmetros

ParâmetroTipoDescrição
msqidintIdentificador da fila.
msgpvoid *Buffer que recebe a mensagem (mtype + dados).
msgszsize_tCapacidade máxima para os dados da mensagem.
msgtyplongFiltro por tipo de mensagem (0 = a mais antiga de qualquer tipo).
msgflgintIPC_NOWAIT, MSG_NOERROR, entre outras flags.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1msqidint
rsiargumento 2msgpvoid *
rdxargumento 3msgszsize_t
r10argumento 4msgtyplong
r8argumento 5msgflgint

Valor de retorno

Número de bytes recebidos (dados, sem `mtype`) em sucesso; -1 em erro, com errno definido.

Códigos de erro (errno)

E2BIG(7)
Lista de argumentos grande demais.
EACCES(13)
Permissão negada.
EIDRM(43)
Identificador removido (IPC System V).
EINTR(4)
Chamada interrompida por um sinal.
EINVAL(22)
Argumento inválido.
ENOMSG(42)
Nenhuma mensagem do tipo desejado.

Relacionadas