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

msgsnd

Envia uma mensagem tipada para uma fila de mensagens System V.

Descrição

Cada mensagem carrega um `long mtype` que receptores podem usar para filtrar seletivamente quais mensagens ler com `msgrcv`.

Header: sys/msg.hman 2

Assinatura

int msgsnd(int msqid, const void * msgp, size_t msgsz, int msgflg);

Parâmetros

ParâmetroTipoDescrição
msqidintIdentificador da fila.
msgpconst void *Ponteiro para uma struct começando com `long mtype`, seguida dos dados da mensagem.
msgszsize_tTamanho dos dados da mensagem (sem contar `mtype`).
msgflgintIPC_NOWAIT para não bloquear se a fila estiver cheia, entre outras flags.

Registradores (x86_64)

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

Valor de retorno

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

Códigos de erro (errno)

EACCES(13)
Permissão negada.
EAGAIN(11)
Recurso temporariamente indisponível (tente novamente); também conhecido como EWOULDBLOCK.
EIDRM(43)
Identificador removido (IPC System V).
EINTR(4)
Chamada interrompida por um sinal.
EINVAL(22)
Argumento inválido.
ENOMEM(12)
Memória insuficiente para completar a operação.

Relacionadas