semget(S)
semget --
get set of semaphores
Syntax
cc . . . -lc
#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 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:
[EACCES]-
A semaphore identifier exists for key,
but operation permission as specified by the low-order 9 bits of
semflg would not be granted.
[EEXIST]-
A semaphore identifier exists for key, but (semflg &
IPC_CREAT) and (semflg & IPC_EXCL) are ``true''.
[EINVAL]-
nsems is either less than or equal to zero or greater than the
system-imposed limit.
[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.
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.
See also
semctl(S),
semop(S)
Standards conformance
semget is conformant with:
X/Open Portability Guide, Issue 3, 1989
.
© 2003 Caldera International, Inc. All rights reserved.
SCO OpenServer Release 5.0.7 -- 11 February 2003