semget(2) semget(2)
NAME
semget - get semaphore identifier
SYNOPSIS
#include <sys/sem.h>
int semget(keyt key, int nsems, int semflg);
DESCRIPTION
semget() returns the semaphore identifier associated with key.
A semaphore identifier and associated data structure and set contain-
ing nsems semaphores are created for key if one of the following is
true:
- key is equal to IPCPRIVATE.
- key does not already have a semaphore identifier associated with
it, and (semflg&IPCCREAT) is true.
On creation, the data structure associated with the new semaphore
identifier is initialized as follows:
- semperm.cuid, semperm.uid, semperm.cgid, and semperm.gid are
set equal to the effective user ID and effective group ID, respec-
tively, of the calling process.
- The access permission bits of semperm.mode are set equal to the
access permission bits of semflg.
- semnsems is set equal to the value of nsems.
- semotime is set equal to 0 and semctime is set equal to the
current time.
semget() fails if one or more of the following apply:
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 permis-
sion 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&IPCCREAT) is false.
Page 1 Reliant UNIX 5.44 Printed 11/98
semget(2) semget(2)
ENOSPC A semaphore identifier is to be created but the system-
imposed limit on the maximum number of allowed semaphores
systemwide would be exceeded.
EEXIST A semaphore identifier exists for key but both
(semflg&IPCCREAT) and (semflg&IPCEXCL) are true.
RESULT
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.
NOTES
In the future there may be modifications to the interfaces for inter-
process communication. You should design your applications so that in
modules using semget() this function can easily be replaced by others.
SEE ALSO
semctl(2), semop(2), stdipc(3C).
Page 2 Reliant UNIX 5.44 Printed 11/98