#include <sys/ipc.h> #include <sys/shm.h> int shmget(key_t key, int size, int shmflg);
Valor de retorno: o identificador do segmento de memória compartilhada shmid, ou -1 em caso de erro.
Esta função é encarregada de buscar o elemento especificado (pela chave de acesso key) na estrutura shmid_ds e, caso esse elemento não exista, de criar um novo segmento de memória compartilhada, com tamanho em bytes igual a size. Além da chave de acesso key e do tamanho do segmento (size), um terceiro argumento (shmflg) é empregado para definir os direitos de acesso ao segmento criado.
O argumento key pode conter os seguintes valores:
O argumento shmflg é bastante semelhante ao semflg utilizado para semáforos (ver seção 5.3. Este flag corresponde à combinação de diferentes constantes pré-definidas através do operador lógico OU). O argumento shmflg permite assim a especificação dos direitos de acesso ao segmento de memória compartilhada criado. As possíveis constantes a serem combinadas são: IPC_CREAT, IPC_EXCL similares àquelas dos semáforos e, SHM_R (=0400) e SHM_W(=200) que dão o direito de leitura e escrita ao segmento. Note que a combinação destas útimas constantes pode ser igualmente representada pelo octal 0600.
Existe muita semelhança entre os direitos de acesso aos segmentos criados e aos arquivos no sistema UNIX através da noção de direitos de leitura e escrita para o usuário, para o grupo e para outros. O número octal definido de maneira similar àquela mostrada em 1.4.2 pode ser utilizado.