Для создания разделяемого сегмента памяти служит системный вы-
зов shmget. Синтаксис данного системного вызова описан так:
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
int shmget (key, size, shmflg)
key_t key;
int size, shmflg;
Целочисленное значение, возвращаемое в случае успешного завершения, есть
идентификатор разделяемого сегмента (shmid). В случае неудачи результат равен
-1.
Смысл аргументов key и shmflg тот же, что и у соответствующих аргументов системного вызова semget. Аргумент size задает размер разделяемого сегмента в байтах.
Системный параметр SHMMNI определяет максимально допустимое число уникальных идентификаторов разделяемых сегментов памяти (shmid) в системе. Попытка его превышения ведет к неудачному завершению системного вызова.
Системный вызов завершится неудачей и тогда, когда значение аргумента size меньше, чем SHMMIN, либо больше, чем SHMMAX. Данные системные параметры специфицируют, соответственно, минимальный и максимальный размеры разделяемого сегмента памяти.
В справочной статье shmget описывается начальное значение ассоциированной структуры данных, формируемое в случае успешного завершения системного вызова.