Linux x86_64IPC & sincronização#71
msgctl
Executa operações de controle sobre uma fila de mensagens System V (consulta, ajuste, remoção).
Descrição
Inclui IPC_STAT, IPC_SET e IPC_RMID, análogos aos de `shmctl`/`semctl`.
Header:
sys/msg.hman 2Assinatura
int msgctl(int msqid, int cmd, struct msqid_ds * buf);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| msqid | int | Identificador da fila. |
| cmd | int | IPC_STAT, IPC_SET, IPC_RMID, entre outros. |
| buf | struct msqid_ds * | Estrutura de entrada/saída com os metadados da fila. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | msqidint |
| rsi | argumento 2 | cmdint |
| rdx | argumento 3 | bufstruct msqid_ds * |
Valor de retorno
Depende de `cmd`; -1 em erro, com errno definido.
Códigos de erro (errno)
- EACCES(13)
- Permissão negada.
- EIDRM(43)
- Identificador removido (IPC System V).
- EINVAL(22)
- Argumento inválido.
- EPERM(1)
- Operação não permitida (falta de privilégio).