The sem_unlink function removes the semaphore named by the
string name. If the semaphore named by name is currently
referenced by other processes, then sem_unlink has no
effect on the state of the semaphore. If one or more processes have
the semaphore open when sem_unlink is called, destruction
of the semaphore is postponed until all references to the semaphore
have been destroyed by calls to
sem_close(S),
exit(S),
or
exec(S).
Calls to
sem_open(S)
to recreate or reconnect to the semaphore refer to a new semaphore
after sem_unlink is called. The sem_unlink call
does not block until all references have been destroyed; it then
returns immediately.
Return values
Upon successful completion, the function returns a value of
zero. Otherwise, the semaphore is not changed by this function call,
and the function returns a value of -l and sets errno to
indicate the error.
Diagnostics
If any of the following conditions occur, the sem_unlink
function returns -1 and sets errno to the corresponding
value:
[EACCES]
Permission is denied to unlink the named semaphore.
[ENAMETOOLONG]
The length of the name string exceeds {NAME_MAX}
while {_POSIX_NO_TRUNC} is in effect.