NAME
sem_close — close a named POSIX semaphore
SYNOPSIS
#include <sys/semaphore.h>
int sem_close(sem_t *sem);
DESCRIPTION
sem_close()
is used to close a named semaphore. A successful call to
sem_close()
will do the following:
Remove the process's descriptor for the semaphore referenced by the
specified
sem_t
structure
sem.
Remove the semaphore referenced by the specified
sem_t
structure
sem,
if the semaphore is marked for removal by a call to
sem_unlink()
and there are no other descriptors referencing this semaphore.
When the process's descriptor for the semaphore referenced by
sem
is removed, subsequent use of this semaphore by this process will fail.
Descriptors for named semaphores are also removed by processes on exit.
Calling
sem_close()
does not affect other processes referencing the
same semaphore.
To use this function, link in the realtime library by specifying
-lrt
on the compiler or linker command line.
EXAMPLES
The following call to
sem_close()
will close a named semaphore referred to by
sem
by removing the process's descriptor to the semaphore and removing the semaphore
if it is marked for removal by a previous
sem_unlink()
and there are no
descriptors referencing it.
RETURN VALUE
If the semaphore was closed and the descriptors referencing it were
removed,
sem_close()
returns 0 to the caller.
If the semaphore could not be closed, the call returns -1 and sets
errno
to indicate the error.
ERRORS
sem_close()
fails and does not perform the requested operation
if the following condition is encountered:
- [EINVAL]
The argument
sem
is not a valid named semaphore.
WARNINGS
A single
sem_close()
call will make the semaphore unusable by the process no matter how many
times that process had called
sem_open()
for the same semaphore.
Subsequent calls to
sem_close()
by the same process for the same semaphore will result in an undefined
behavior.
STANDARDS CONFORMANCE
sem_close(): POSIX