SEMGET(S) UNIX System V SEMGET(S)
Name
semget - get set of semaphores
Syntax
#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(S)) 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
associated 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
process.
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(S)] as
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
associated 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
system 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(S), semctl(S), semop(S)
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.
Standards Conformance
semget is conformant with:
AT&T SVID Issue 2, Select Code 307-127;
and The X/Open Portability Guide II of January 1987.
(printed 6/20/89)