Linux x86_64IPC & sincronização#29
shmget
Cria ou obtém acesso a um segmento de memória compartilhada System V.
Descrição
Parte da API de IPC System V; retorna um identificador que outros processos podem usar (com a mesma `key`) para mapear o mesmo bloco de memória física em seus próprios espaços de endereçamento via `shmat`.
Header:
sys/shm.hman 2Assinatura
int shmget(key_t key, size_t size, int shmflg);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| key | key_t | Chave que identifica o segmento (ou IPC_PRIVATE para um novo segmento privado). |
| size | size_t | Tamanho do segmento em bytes, ao criar um novo. |
| shmflg | int | Permissões e flags, ex.: IPC_CREAT, IPC_EXCL. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | keykey_t |
| rsi | argumento 2 | sizesize_t |
| rdx | argumento 3 | shmflgint |
Valor de retorno
Um identificador de segmento em sucesso; -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.
- ENOENT(2)
- Arquivo ou diretório inexistente.
- ENOMEM(12)
- Memória insuficiente para completar a operação.
- ENOSPC(28)
- Sem espaço livre no dispositivo.