Операционные системы. Замятин А.В - 90 стр.

UptoLike

Составители: 

90
Прототипы перечисленных системных вызовов описаны в файлах
#inсlude <sys/ipc.h>
#inсlude <sys/sem.h>
Системный вызов semget имеет синтаксис
int semid = semget (key_t key, int count, int flag)
параметрами которого является ключ или уникальное имя сегмента
(key), набора семафоров и дополнительные флаги (flag), определенные в
<sys/ipc.h>, число семафоров в наборе семафоров (count), обладающих
одним и тем же ключом. Системный вызов возвращает идентификатор
набора семафоров semid. Живучесть такого семафора определяется жи-
вучестью ядра, т. е. объект семафор будет уничтожен тогда и только то-
гда, когда произойдет перезагрузка ядра либо его принудительно уда-
лят. После вызова semget индивидуальный семафор идентифицируется
идентификатором набора семафоров и номером семафора в этом набо-
ре. Флаги системного вызова semget приведены ниже в таблице.
Таблица 4.1
Флаги системного вызова semge
Флаг Описание
IPC_CREAT
Вызов semget создает новый семафор для данного
ключа. Если флаг IPC_CREAT не задан, а набор се-
мафоров с указанным ключом уже существует, то
обращающийся процесс получит идентификатор
существующего набора семафоров
IPC_EXLC
Флаг IPC_EXLC вместе с флагом IPC_CREAT пред-
назначен для создания (и только для создания) на-
бора семафоров. Если набор семафоров уже суще-
ствует, semget возвратит -1, а системная переменная
errno будет содержать значение EEXIST
Младшие 9 бит флага задают права доступа к набору семафоров
(табл. 4.2).
Таблица 4.2
Константы режима доступа при создании нового объекта IPC
Константа Описание
S_IRUSR Владелец чтение
S_IWUSR Владелец запись
S_IRGRP Группа чтение
S_IWGRP Группа запись
S_IROTH Прочие чтение
S_IWOTH Прочие запись