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)