semget(S)
semget --
get set of semaphores
Synopsis
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
int semget(key_t key, int nsems, int semflg);
Description
semget
returns the semaphore identifier associated with
key.
This identifier is accessible by any process in the system,
subject to normal access restrictions
and the permissions set with semflg.
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.
On 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 access permission bits of
sem_perm.mode
are set equal to the access permission 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.
Return values
On success, semget returns a non-negative integer, namely a semaphore identifier.
On failure, semget returns -1 and sets errno to identify the error.
Errors
In the following conditions, semget fails and sets errno to:
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 semaphores or 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 both
(semflg&IPC_CREAT) and (semflg&IPC_EXCL)
are both true.
References
intro(S),
semctl(S),
semop(S),
stdipc(S)
© 2005 The SCO Group, Inc. All rights reserved.
SCO OpenServer Release 6.0.0 - 01 June 2005