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 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(3),
sem_trywait(3),
sem_post(3), and
sem_destroy(3). sem is no longer valid after a
successful call to
sem_destroy(3).
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 indicate the
error.
ERRORS
It is an error to call sem_destroy(3) on a named semaphore created by sem_open(3).
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_getvalue(3), sem_open(3), sem_post(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.