sem_init —
    initialize an unnamed semaphore
Standard C Library (libc, -lc)
#include
    <semaphore.h>
int
  
  sem_init(sem_t
    *sem, int pshared,
    unsigned int value);
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, the semaphore
    should be located in shared memory region (see
    mmap(2),
    shm_open(2),
    and
    shmget(2)),
    any process having read and write access to address
    sem can perform semaphore operations on
    sem.
Following a successful call to
    sem_init(),
    sem can be used as an argument in subsequent calls to
    sem_wait(3),
    sem_trywait(3),
    sem_post(3),
    and
    sem_destroy(3).
    The sem argument is no longer valid after a successful
    call to
    sem_destroy(3).
The sem_init() function returns the
    value 0 if successful; otherwise the value -1 is returned and
    the global variable errno is set to indicate the
    error.
The sem_init() function will fail if:
  - [
EINVAL] 
  - The value argument exceeds
      
SEM_VALUE_MAX. 
  - [
ENOSPC] 
  - Memory allocation error.
 
The sem_init() function conforms to
    ISO/IEC 9945-1:1996 (“POSIX.1”).