SEM_INIT(3C)            Standard C Library Functions            SEM_INIT(3C)
NAME
       sem_init - initialize an unnamed semaphore
SYNOPSIS
       #include <semaphore.h>       
int sem_init(
sem_t *sem, 
int pshared, 
unsigned int value);
DESCRIPTION
       The 
sem_init() function is used to initialize the unnamed semaphore
       referred to by 
sem. The value of the initialized semaphore is 
value.
       Following a successful call to 
sem_init(), the semaphore may be used
       in subsequent calls to 
sem_wait(3C), 
sem_trywait(3C), 
sem_post(3C),
       and 
sem_destroy(3C). This semaphore remains usable until the
       semaphore is destroyed.
       If the 
pshared argument has a non-zero value, then the semaphore is
       shared between processes; in this case, any process that can access
       the semaphore 
sem can use 
sem for performing 
sem_wait(3C),       
sem_trywait(3C), 
sem_post(3C), and 
sem_destroy(3C) operations.
       Only 
sem itself may be used for performing synchronization. The
       result of referring to copies of 
sem in calls to 
sem_wait(3C),       
sem_trywait(3C), 
sem_post(3C), and 
sem_destroy(3C), is undefined.
       If the 
pshared argument is zero, then the semaphore is shared between
       threads of the process; any thread in this process can use 
sem for
       performing 
sem_wait(3C), 
sem_trywait(3C), 
sem_post(3C), and       
sem_destroy(3C) operations. The use of the semaphore by threads other
       than those created in the same process is undefined.
       Attempting to initialize an already initialized semaphore results in
       undefined behavior.
       The 
sem_open(3C) function is used with named semaphores.
RETURN VALUES
       Upon successful completion, the function initializes the semaphore in       
sem. Otherwise, it returns 
-1 and sets 
errno to indicate the error.
ERRORS
       The 
sem_init() function will fail if:       
EINVAL                  The 
value argument exceeds  
SEM_VALUE_MAX.       
ENOSPC                  A resource required to initialize the semaphore has been
                  exhausted, or the resources have reached the limit on
                  semaphores (
SEM_NSEMS_MAX).       
ENOSYS                  The 
sem_init() function is not supported by the system.       
EPERM                  The process lacks the appropriate privileges to initialize
                  the semaphore.
ATTRIBUTES
       See 
attributes(7) for descriptions of the following attributes:
       +--------------------+-------------------+
       |  ATTRIBUTE TYPE    |  ATTRIBUTE VALUE  |
       +--------------------+-------------------+
       |Interface Stability | Committed         |
       +--------------------+-------------------+
       |MT-Level            | MT-Safe           |
       +--------------------+-------------------+
       |Standard            | See 
standards(7). |
       +--------------------+-------------------+
SEE ALSO
       sem_destroy(3C), 
sem_open(3C), 
sem_post(3C), 
sem_wait(3C),       
attributes(7), 
standards(7)                                July 9, 2009                    SEM_INIT(3C)