SEMGET(2) SEMGET(2) НАЗВАНИЕ semget - получение идентификатора множества семафоров СИНТАКСИС |#include |#include |#include | |int semget (key, nsems, semflg) |key_t key; |int nsems, semflg; ОПИСАНИЕ Системный вызов semget возвращает идентификатор мно- жества семафоров, ассоциированный с ключом key. Идентификатор и ассоциированные с ним структура данных и множество из nsems семафоров [см. intro(2)] создаются для ключа key в следующих случаях: 1. Значение аргумента key равно IPC_PRIVATE. 2. Ключ key еще не имеет ассоциированного с ним иден- тификатора множества семафоров и выражение (semflg & IPC_CREAT) истинно. При создании структуры данных, ассоциированной с новым идентификатором множества семафоров, выполняются следу- ющие инициализирующие действия: 1. Значения полей sem_perm.cuid, sem_perm.uid, sem_perm.cgid и sem_perm.gid устанавливаются рав- ными действующему идентификатору пользователя и, соответственно, действующему идентификатору группы вызывающего процесса. 2. Младшие 9 бит поля sem_perm.mode устанавливаются равными 9 младшим битам аргумента semflg. 3. Значение поля sem_nsems устанавливается равным значению аргумента nsems. 4. Значение поля 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)) истинно. СМ. ТАКЖЕ intro(2), semctl(2), semop(2). ДИАГНОСТИКА При успешном завершении системного вызова возвращается неотрицательное целое число - идентификатор множества семафоров. В случае ошибки возвращается -1, а перемен- ной errno присваивается код ошибки.