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

shmat

Mapeia (anexa) um segmento de memória compartilhada System V no espaço de endereçamento do processo.

Descrição

Depois de anexado, o segmento é acessado como memória comum, sem chamadas de sistema adicionais para ler/escrever.

Header: sys/shm.hman 2

Assinatura

void * shmat(int shmid, const void * shmaddr, int shmflg);

Parâmetros

ParâmetroTipoDescrição
shmidintIdentificador retornado por shmget.
shmaddrconst void *Endereço sugerido para o mapeamento, ou NULL para o kernel escolher.
shmflgintSHM_RDONLY para anexar somente leitura, entre outras flags.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1shmidint
rsiargumento 2shmaddrconst void *
rdxargumento 3shmflgint

Valor de retorno

Endereço onde o segmento foi mapeado em sucesso; (void *) -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.
ENOMEM(12)
Memória insuficiente para completar a operação.

Relacionadas

Equivalente em Windows Win32