sem_unlink - remove a named semaphore
#include <semaphore.h>
sem_unlink() removes the semaphore named by the string name. If the semaphore, name, is currently referenced by other threads, then sem_unlink() has no effect on the state of the semaphore. If one or more threads 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(). Calls to sem_open() to re-create or re-connect to the semaphore will refer to a new semaphore after sem_unlink() is called. sem_unlink() does not block until all references have been destroyed; rather, it returns immediately.
If successful, sem_unlink() returns 0; otherwise, the function returns -1, sets errno to indicate the error condition, and the semaphore is left unchanged.