SEMGET(2) INTERACTIVE UNIX System SEMGET(2)
NAME
semget - get set of semaphores
SYNOPSIS
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
int semget (key, nsems, semflg)
key_t key;
int nsems, semflg;
DESCRIPTION
The semget system call returns the semaphore identifier
associated with key.
A semaphore identifier and associated data structure and set
containing nsems semaphores [see intro(2)] are created for
key if one of the following is true:
Key is equal to IPC_PRIVATE.
Key does not already have a semaphore identifier asso-
ciated with it, and (semflg & IPC_CREAT) is ``true''.
Upon creation, the data structure associated with the new
semaphore identifier is initialized as follows:
Sem_perm.cuid, sem_perm.uid, sem_perm.cgid, and
sem_perm.gid are set equal to the effective user ID and
effective group ID, respectively, of the calling pro-
cess.
The low-order 9 bits of sem_perm.mode are set equal to
the low-order 9 bits of semflg.
Sem_nsems is set equal to the value of nsems.
Sem_otime is set equal to 0 and sem_ctime is set equal
to the current time.
The data structure associated with each semaphore in the set
is not initialized. The function semctl with the command
setval or setall can be used to initialize each semaphore.
The semget system call fails if one or more of the following
is true:
[EINVAL] Nsems is either less than or equal to zero or
greater than the system-imposed limit.
[EACCES] A semaphore identifier exists for key, but
operation permission [see intro(2)] as
Rev. C Software Development Set Page 1
SEMGET(2) INTERACTIVE UNIX System SEMGET(2)
specified by the low-order 9 bits of semflg
would not be granted.
[EINVAL] A semaphore identifier exists for key, but
the number of semaphores in the set associ-
ated with it is less than nsems, and nsems is
not equal to zero.
[ENOENT] A semaphore identifier does not exist for
key, and (semflg & IPC_CREAT) is ``false''.
[ENOSPC] A semaphore identifier is to be created, but
the system-imposed limit on the maximum
number of allowed semaphore identifiers sys-
tem wide would be exceeded.
[ENOSPC] A semaphore identifier is to be created, but
the system-imposed limit on the maximum
number of allowed semaphores system wide
would be exceeded.
[EEXIST] A semaphore identifier exists for key, but
[(semflg & IPC_CREAT) and (semflg &
IPC_EXCL)] are ``true''.
SEE ALSO
intro(2), semctl(2), semop(2).
DIAGNOSTICS
Upon successful completion, a non-negative integer, namely a
semaphore identifier, is returned. Otherwise, a value of -1
is returned, and errno is set to indicate the error.
Rev. C Software Development Set Page 2