Create the semaphore if it does not already exist.
The third argument to the call to
must be of type
The fourth argument must be an
|O_EXCL||Create the semaphore if it does not exist. If the semaphore already exists, sem_open will fail. This flag is ignored unless O_CREAT is also specified.|
The sem_close function closes a named semaphore that was opened by a call to sem_open.
The sem_unlink function removes the semaphore named name. Resources allocated to the semaphore are only deallocated when all processes that have the semaphore open close it.
If successful, the sem_open function returns the address of the opened semaphore. If the same name argument is given to multiple calls to sem_open by the same process without an intervening call to sem_close, the same address is returned each time. If the semaphore cannot be opened, sem_open returns SEM_FAILED and the global variable errno is set to indicate the error.
.Rv -std sem_close sem_unlink
The sem_open function will fail if:
[EACCES] The semaphore exists and the permissions specified by oflag at the time it was created deny access to this process. [EACCES] The semaphore does not exist, but permission to create it is denied. [EEXIST] O_CREAT and O_EXCL are set but the semaphore already exists. [EINTR] The call was interrupted by a signal. [EINVAL] The sem_open operation is not supported for the given name. [EINVAL] The value argument is greater than SEM_VALUE_MAX. [ENAMETOOLONG] The name argument is too long. [ENFILE] The system limit on semaphores has been reached. [ENOENT] O_CREAT is not set but the named semaphore does not exist. [ENOSPC] There is not enough space to create the semaphore.
The sem_close function will fail if:
[EINVAL] The sem argument is not a valid semaphore.
The sem_unlink function will fail if:
[EACCES] Permission is denied to unlink the semaphore. [ENAMETOOLONG] The specified name is too long. [ENOENT] The named semaphore does not exist.
close(2), open(2), umask(2), unlink(2), sem_getvalue(3), sem_post(3), sem_trywait(3), sem_wait(3), sem(4)
The sem_open, sem_close, and sem_unlink functions conform to -p1003.1-96.
Support for named semaphores first appeared in
.Fx 5.0 .