Linux x86_64IPC & sincronização#31
shmctl
Executa operações de controle sobre um segmento de memória compartilhada System V (consulta, ajuste, remoção).
Descrição
Inclui IPC_STAT (consultar metadados), IPC_SET (ajustar permissões/dono) e IPC_RMID (marcar para remoção quando o último processo se desanexar).
Header:
sys/shm.hman 2Assinatura
int shmctl(int shmid, int cmd, struct shmid_ds * buf);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| shmid | int | Identificador do segmento. |
| cmd | int | IPC_STAT, IPC_SET, IPC_RMID, entre outros. |
| buf | struct shmid_ds * | Estrutura de entrada/saída com os metadados do segmento. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | shmidint |
| rsi | argumento 2 | cmdint |
| rdx | argumento 3 | bufstruct shmid_ds * |
Valor de retorno
Depende de `cmd`; em geral 0 ou um valor informativo em sucesso, -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).