Создание множеств семафоров
Для создания множества семафоров служит системный вызов semget(2). В статье semget(2) Справочника программиста синтаксис данного системного вызова описан так:
#include <sys/types.h> #include <sys/ipc.h> #include <sys/sem.h>
int semget (key, nsems, semflg) key_t key; int nsems, semflg;
Целочисленное значение, возвращаемое в случае успешного завершения, есть идентификатор множества семафоров (semid). В случае неудачи результат равен -1.
Смысл аргументов key и semflg тот же, что и у соответствующих аргументов системного вызова msgget(2). Аргумент nsems задает число семафоров в множестве. Если запрашивается идентификатор существующего множества, значение nsems не должно превосходить числа семафоров в множестве.
Превышение системных параметров SEMMNI, SEMMNS и SEMMSL при попытке создать новое множество всегда ведет к неудачному завершению. Системный параметр SEMMNI определяет максимально допустимое число уникальных идентификаторов множеств семафоров в системе. Системный параметр SEMMNS определяет максимальное общее число семафоров в системе. Системный параметр SEMMSL определяет максимально допустимое число семафоров в одном множестве.
В статье semget(2) Справочника программиста описывается начальное значение ассоциированной структуры данных, формируемое в случае успешного завершения системного вызова.