semget.2 (2010 09)

s
semget(2) semget(2)
NAME
semget - get set of semaphores
SYNOPSIS
#include <sys/sem.h>
int semget(key_t key, int nsems, int semflg);
DESCRIPTION
semget() 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. This call creates a new identifier, subject to available resources.
The identifier is never returned by another call to
semget() until it has been released by a call to
semctl(). The identifier should be used among the calling process and its descendents; however,
it is not a requirement. The resource can be accessed by any process having the proper permissions.
key does not already have a semaphore identifier associated with it, and (semflg &
IPC_CREAT)is
"true".
Specific behavior can be requested by ORing the following masks into semflg.
IPC_CREAT: Create a semaphore identifier if one does not already exist for key.
IPC_EXCL:IfIPC_CREAT is specified and key already has a semaphore identifier associated with
it, return an error.
The low-order 9 bits of semflg are the semaphore operation permissions which are defined in glossary (9).
Upon creation, the data structure associated with the new semaphore identifier is initialized as follows:
In the operation-permission structure,
sem_perm.cuid and sem_perm.uid are set equal to
the effective-user-ID of the calling process, while
sem_perm.cgid and sem_perm.gid are set
to the effective-group-ID 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.
Security Restrictions
Some or all of the actions associated with this system call are subject to compartmental restrictions. See
compartments (5) for more information about compartmentalization on systems that support that feature.
Compartmental restrictions can be overridden if the process possesses the
COMMALLOWED privilege
(PRIV_COMMALLOWED). Processes owned by the superuser may not have this privilege. Processes
owned by any user may have this privilege, depending on system configuration.
See privileges (5) for more information about privileged access on systems that support fine-grained
privileges.
EXAMPLES
The following call to
semget() returns a semid associated with the key returned by
ftok("myfile", ’A’). If a semid associated with the key does not exist, a new semid, set of 4 sema-
phores, and associated data structure will be created. If a semid for the key already exists, the semid is
simply returned.
int semid;
mysemid = semget (ftok("myfile",’A’), 4, IPC_CREAT | 0600);
RETURN VALUE
Upon successful completion, a non-negative integer, namely a semaphore identifier, is returned. Other-
wise, a value of 1 is returned and errno is set to indicate the error.
ERRORS
semget() fails if one or more of the following is true:
HP-UX 11i Version 3: September 2010 1 Hewlett-Packard Company 1

Summary of content (2 pages)