Jump to content United States-English
HP.com Home Products and Services Support and Drivers Solutions How to Buy
» Contact HP
More options
HP.com home
HP-UX Reference > S


HP-UX 11i Version 3: February 2007

Technical documentation

» Feedback
Content starts here

 » Table of Contents

 » Index


semget — get set of semaphores


#include <sys/sem.h>

int semget(key_t key, int nsems, int semflg);


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: If IPC_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.


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 semaphores, 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);


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.


semget() fails if one or more of the following is true:


nsems is either less than or equal to zero or greater than the system-imposed limit.


A semaphore identifier exists for key, but operation permission as specified by the low-order 9 bits of semflg would not be granted.


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.


A semaphore identifier does not exist for key and (semflg & IPC_CREAT) is "false".


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.


A semaphore identifier exists for key but ((semflg& IPC_CREAT) && (semflg & IPC_EXCL)) is "true".


ipcrm(1), ipcs(1), semctl(2), semop(2), stdipc(3C).


semget(): SVID2, SVID3, XPG2, XPG3, XPG4

Printable version
Privacy statement Using this site means you accept its terms Feedback to webmaster
© 1983-2007 Hewlett-Packard Development Company, L.P.