dwww Home | Manual pages | Find package

sem_init(3)                 Library Functions Manual                sem_init(3)

NAME
       sem_init - initialize an unnamed semaphore

LIBRARY
       POSIX threads library (libpthread, -lpthread)

SYNOPSIS
       #include <semaphore.h>

       int sem_init(sem_t *sem, int pshared, unsigned int value);

DESCRIPTION
       sem_init()  initializes  the unnamed semaphore at the address pointed to
       by sem.  The value argument specifies the initial value  for  the  sema-
       phore.

       The  pshared  argument  indicates whether this semaphore is to be shared
       between the threads of a process, or between processes.

       If pshared has the value 0, then the semaphore  is  shared  between  the
       threads of a process, and should be located at some address that is vis-
       ible  to  all  threads (e.g., a global variable, or a variable allocated
       dynamically on the heap).

       If pshared is nonzero, then the semaphore is shared  between  processes,
       and  should  be  located  in a region of shared memory (see shm_open(3),
       mmap(2), and shmget(2)).  (Since a child created by fork(2) inherits its
       parent's memory mappings,  it  can  also  access  the  semaphore.)   Any
       process that can access the shared memory region can operate on the sem-
       aphore using sem_post(3), sem_wait(3), and so on.

       Initializing  a  semaphore  that has already been initialized results in
       undefined behavior.

RETURN VALUE
       sem_init() returns 0 on success; on error, -1 is returned, and errno  is
       set to indicate the error.

ERRORS
       EINVAL value exceeds SEM_VALUE_MAX.

       ENOSYS pshared  is  nonzero,  but  the  system does not support process-
              shared semaphores (see sem_overview(7)).

ATTRIBUTES
       For an explanation of the terms used in this section, see attributes(7).
       ┌────────────────────────────────────────────┬───────────────┬─────────┐
       │ Interface                                  Attribute     Value   │
       ├────────────────────────────────────────────┼───────────────┼─────────┤
       │ sem_init()                                 │ Thread safety │ MT-Safe │
       └────────────────────────────────────────────┴───────────────┴─────────┘

STANDARDS
       POSIX.1-2008.

HISTORY
       POSIX.1-2001.

       Bizarrely, POSIX.1-2001 does not specify the value that  should  be  re-
       turned by a successful call to sem_init().  POSIX.1-2008 rectifies this,
       specifying the zero return on success.

EXAMPLES
       See shm_open(3) and sem_wait(3).

SEE ALSO
       sem_destroy(3), sem_post(3), sem_wait(3), sem_overview(7)

Linux man-pages 6.9.1              2024-05-02                       sem_init(3)

Generated by dwww version 1.16 on Tue Dec 16 03:59:10 CET 2025.