semget(2) CLIX semget(2)
NAME
semget - Gets a set of semaphores
LIBRARY
Standard C Library (libc.a)
SYNOPSIS
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
int semget(
key_t key ,
int nsems ,
int semflg );
PARAMETERS
key Specifies a key used by the kernel to uniquely identify a
semaphore.
nsems Specifies the number of semaphores to associate with the returned
semaphore identifier.
semflg Represents a flag for specifying permissions and other control
information.
DESCRIPTION
The semget() function 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:
⊕ The value of key is equal to IPC_PRIVATE.
⊕ The value of 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:
⊕ The sem_perm.cuid, sem_perm.uid, sem_perm.cgid, and sem_perm.gid
members are set equal to the effective user ID and effective group ID,
2/94 - Intergraph Corporation 1
semget(2) CLIX semget(2)
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.
⊕ The value of sem_nsems is set equal to the value of nsems.
⊕ The sem_otime member is set equal to 0 and sem_ctime is set equal to
the current time.
EXAMPLES
This example gets a semaphore identifier that has three semaphores with
read/write access for the owner. It creates a semaphore if it does not
exist, and fails if it does:
int semid;
if ((semid = semget(75, 3, 0600 | IPC_CREAT | IPC_EXCL)) < 0) {
perror("Could not get semaphores");
exit(1);
}
RETURN VALUES
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.
ERRORS
The semget() function fails if one or more of the following are true:
[EINVAL] The value of nsems is either less than or equal to 0 or greater
than the system-imposed limit.
[EACCES] A semaphore identifier exists for key, but operation permission
(see intro(2)) 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 0.
[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.
2 Intergraph Corporation - 2/94
semget(2) CLIX semget(2)
[EEXIST] A semaphore identifier exists for key but (semflg & IPC_CREAT)
and (semflg & IPC_EXCL) are true.
RELATED INFORMATION
Functions: intro(2), semctl(2), semop(2)
2/94 - Intergraph Corporation 3