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

mq_open

Cria ou abre uma fila de mensagens POSIX, identificada por um nome ao estilo de caminho de arquivo.

Descrição

Alternativa moderna à API de mensagens System V (`msgget`/`msgsnd`/`msgrcv`), com nomes hierárquicos, suporte a notificação assíncrona (via `mq_notify`) e integração com `poll`/`select`.

Header: mqueue.hman 2Desde o kernel 2.6.6

Assinatura

mqd_t mq_open(
    const char * name,
    int oflag,
    mode_t mode,
    struct mq_attr * attr
);

Parâmetros

ParâmetroTipoDescrição
nameconst char *Nome da fila, no formato "/nome".
oflagintO_RDONLY, O_WRONLY, O_RDWR, opcionalmente com O_CREAT, O_EXCL, O_NONBLOCK.
modemode_tPermissões ao criar a fila (usado apenas com O_CREAT).
attrstruct mq_attr *Atributos iniciais (tamanho máximo da fila, tamanho máximo de mensagem) ao criar.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1nameconst char *
rsiargumento 2oflagint
rdxargumento 3modemode_t
r10argumento 4attrstruct mq_attr *

Valor de retorno

Um descritor de fila de mensagens em sucesso; (mqd_t) -1 em erro, com errno definido.

Códigos de erro (errno)

EACCES(13)
Permissão negada.
EEXIST(17)
Arquivo já existe.
EINVAL(22)
Argumento inválido.
EMFILE(24)
Limite de arquivos abertos do processo atingido.
ENOENT(2)
Arquivo ou diretório inexistente.
ENOSPC(28)
Sem espaço livre no dispositivo.

Relacionadas