НАЗВАНИЕ
semget - получение идентификатора множества семафоров
СИНТАКСИС
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
int semget (key, nsems, semflg)
key_t key;
int nsems, semflg;
ОПИСАНИЕ
Системный вызов semget возвращает идентификатор множества семафоров, ассоциированный с ключом key.
Идентификатор и ассоциированные с ним структура данных
и множество из nsems семафоров [см. intro(2)] создаются
для ключа key в следующих случаях:
Значение аргумента key равно IPC_PRIVATE.
Ключ key еще не имеет ассоциированного с ним идентификатора множества семафоров и выражение (semflg
& IPC_CREAT) истинно.
При создании структуры данных, ассоциированной с новым
идентификатором множества семафоров, выполняются следующие инициализирующие действия:
Значения полей sem_perm.cuid, sem_perm.uid,
sem_perm.cgid и sem_perm.gid устанавливаются равными действующему идентификатору пользователя и,
соответственно, действующему идентификатору группы
вызывающего процесса.
Значение поля sem_nsems устанавливается равным
значению аргумента nsems.
Значение поля sem_otime устанавливается равным 0 и
значение поля sem_ctime устанавливается равным текущему времени.
Системный вызов semget завершается неудачей, если выполнено хотя бы одно из следующих условий:
[EINVAL]
Значение аргумента nsems меньше или равно
0, или больше максимально допустимого в
системе.
[EACCES]
Для ключа key уже существует идентификатор
множества семафоров, но не могут быть предоставлены права доступа [см. intro(2)],
определенные в 9 младших битах аргумента
semflg.
[EINVAL]
Для ключа key уже существует идентификатор
множества семафоров, но количество семафоров в ассоциированном множестве меньше значения nsems и значение nsems не равно 0.
[ENOENT]
Для ключа key не существует идентификатор
множества семафоров и выражение (semflg &
IPC_CREAT) ложно.
[ENOSPC]
Идентификатор множества семафоров должен
быть создан, но тогда будет превышено максимально допустимое количество идентификаторов в системе.
[ENOSPC]
Идентификатор множества семафоров должен
быть создан, но тогда будет превышено максимально допустимое количество семафоров в
системе.
[EEXIST]
Для ключа key уже существует идентификатор
множества семафоров и выражение ((semflg &
IPC_CREAT) & (semflg & IPC_EXCL)) истинно.
ДИАГНОСТИКА
При успешном завершении системного вызова возвращается
неотрицательное целое число - идентификатор множества
семафоров. В случае ошибки возвращается -1, а переменной errno присваивается код ошибки.