| SEM_OPEN(3) | Library Functions Manual | SEM_OPEN(3) | 
sem_open, sem_close,
  sem_unlink —
#include <semaphore.h>
sem_t *
  
  sem_open(const
    char *name, int
    oflag, ...);
int
  
  sem_close(sem_t
    *sem);
int
  
  sem_unlink(const
    char *name);
sem_open() function creates or opens the named
  semaphore specified by name. The returned semaphore may
  be used in subsequent calls to
  sem_getvalue(3),
  sem_timedwait(3),
  sem_trywait(3),
  sem_wait(3),
  sem_post(3), and
  sem_close().
The following bits may be set in the oflag argument:
O_CREATThe third argument to the call to
        sem_open() must be of type
        mode_t and specifies the mode for the semaphore.
        Only the S_IWUSR,
        S_IWGRP, and S_IWOTH
        bits are examined; it is not possible to grant only “read”
        permission on a semaphore. The mode is modified according to the
        process's file creation mask; see
        umask(2).
The fourth argument must be an unsigned
        int and specifies the initial value for the semaphore, and must be
        no greater than SEM_VALUE_MAX.
O_EXCLsem_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.
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.
  
  The sem_close() and
    sem_unlink() functions return the value 0 if
    successful; otherwise the value -1 is returned and the global
    variable errno is set to indicate the error.
sem_open() function will fail if:
EACCES]EEXIST]O_CREAT
      and O_EXCL are set but the semaphore already
      exists.EINTR]EINVAL]SEM_VALUE_MAX.ENAMETOOLONG]NAME_MAX, or longer than the implementing file
      system will allow.ENFILE]ENOENT]O_CREAT
      is not set and the named semaphore does not exist.ENOSPC]The sem_close() function will fail if:
EINVAL]The sem_unlink() function will fail
  if:
EACCES]ENAMETOOLONG]NAME_MAX, or longer than the implementing file
      system will allow.ENOENT]sem_open(), sem_close(), and
  sem_unlink() functions conform to
  ISO/IEC 9945-1:1996 (“POSIX.1”).
| May 4, 2018 | NetBSD 10.0 |