The sem_close function is used to indicate that the
calling process has finished using the named semaphore indicated by
sem.
The sem_close function deallocates (that is, makes
available for reuse by a subsequent
sem_open(S)
by this process) any system resources allocated by the system for
use by this process for this semaphore.
If the semaphore has not been removed with a successful call to
sem_unlink(S),
then sem_close has no effect on the state of the
semaphore. If the sem_unlink function has been
successfully invoked for name after the most recent call
to sem_open with O_CREAT for this semaphore,
then when all processes that have opened the semaphore close it, the
semaphore is no longer accessible.
Return values
Upon successful completion, a value of zero is returned. Otherwise,
a value of -l is returned and errno is set to indicate
the error.
Diagnostics
If the following condition occurs, the sem_close function
returns -1 and sets errno to the corresponding value:
[EINVAL]
The sem argument is not a valid semaphore descriptor.