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_CREAT
The 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_EXCL
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.
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 9.2 |