Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

sem_init(3) [netbsd man page]

SEM_INIT(3)						   BSD Library Functions Manual 					       SEM_INIT(3)

sem_init -- initialize an unnamed semaphore LIBRARY
POSIX Real-time Library (librt, -lrt) SYNOPSIS
#include <semaphore.h> int sem_init(sem_t *sem, int pshared, unsigned int value); DESCRIPTION
The sem_init() function initializes the unnamed semaphore pointed to by sem to have the value value. A non-zero value for pshared specifies a shared semaphore that can be used by multiple processes, which this implementation is not capable of. Following a successful call to sem_init(), sem can be used as an argument in subsequent calls to sem_wait, sem_trywait, sem_post, and sem_destroy. sem is no longer valid after a successful call to sem_destroy. RETURN VALUES
The sem_init() function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indi- cate the error. ERRORS
sem_init() will fail if: [EINVAL] value exceeds SEM_VALUE_MAX. [ENOSPC] Memory allocation error. [EPERM] Unable to initialize a shared semaphore. SEE ALSO
sem_destroy(3), sem_post(3), sem_trywait(3), sem_wait(3) STANDARDS
sem_init() conforms to ISO/IEC 9945-1:1996 (``POSIX.1''). This implementation does not support shared semaphores, and reports this fact by setting errno to EPERM. This is perhaps a stretch of the intention of POSIX, but is compliant, with the caveat that sem_init() always reports a permissions error when an attempt to create a shared semaphore is made. BSD
January 22, 2003 BSD

Check Out this Related Man Page

sem_init(3)						     Library Functions Manual						       sem_init(3)

sem_init - Initializes an unnamed semaphore (P1003.1b) LIBRARY
Realtime Library (, librt.a) SYNOPSIS
#include <semaphore.h> int sem_init ( sem_t *sem, int pshared, unsigned int value); PARAMETERS
sem Specifies a location to receive the descriptor of the initialized semaphore. pshared Specifies a value indicating whether the semaphore should be sharable between processes (non-zero value) or not (zero). value Specifies the initial value to be given to the semaphore. DESCRIPTION
The sem_init function creates a new counting semaphore with a specific value. A semaphore is used to limit access to a critical resource. When a process requires access to the resource without interference from other processes, it attempts to establish a connection with the associated semaphore. If the semaphore value is greater than zero, the connection is established and the semaphore value is decremented by one. If the semaphore value is less than or equal to zero, the process attempting to access the resource is blocked and must wait for another process to release the semaphore and increment the semaphore value. The sem_init function establishes a connection between an unnamed semaphore and a process; the sem_wait and sem_trywait functions lock the semaphore; and the sem_post function unlocks the semaphore. Use the sem_destroy function to deallocate system resources allocated to the process for use with the semaphore. You can use the sem_getvalue function to obtain the value of a semaphore. A semaphore created by a call to the sem_init function remains valid until the semaphore is removed by a call to the sem_destroy function. RETURN VALUES
On successful completion, the function returns the value 0 (zero); otherwise, the function returns the value -1 and sets errno to indicate the error. ERRORS
The sem_init function fails under the following conditions: [EINVAL] The value argument exceeds {SEM_VALUE_MAX}. [ENOSPC] A resource required to initialize the semaphore has been exhausted. The limit on semaphores ({SEM_NSEMS_MAX}) has been reached. [EPERM] The process lacks the appropriate privilege to initialize the semaphore. RELATED INFORMATION
Functions: sem_destroy(3), sem_post(3), sem_trywait(3),sem_wait(3) Guide to Realtime Programming delim off sem_init(3)
Man Page