Операционная система UNIX. Руководство программиста

Создание разделяемых сегментов памяти


Для создания разделяемого сегмента памяти служит системный вызов shmget(2). В статье shmget(2) Справочника программиста синтаксис данного системного вызова описан так:

#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(2). Аргумент size задает размер разделяемого сегмента в байтах.

Системный параметр SHMMNI определяет максимально допустимое число уникальных идентификаторов разделяемых сегментов памяти (shmid) в системе. Попытка его превышения ведет к неудачному завершению системного вызова.

Системный вызов завершится неудачей и тогда, когда значение аргумента size меньше, чем SHMMIN, либо больше, чем SHMMAX. Данные системные параметры специфицируют, соответственно, минимальный и максимальный размеры разделяемого сегмента памяти.

В статье shmget(2) Справочника программиста описывается начальное значение ассоциированной структуры данных, формируемое в случае успешного завершения системного вызова.



Содержание раздела