|SEM_OPEN(2)||System Calls Manual||SEM_OPEN(2)|
initialize and open a named semaphore
sem_open(const char *name,
int oflag, ...);
The parameters "mode_t mode" and "unsigned int value" are optional.
The named semaphore named name is initialized and opened as specified by the argument oflag and a semaphore descriptor is returned to the calling process.
The value of oflag is formed by or'ing the following values:
O_CREAT create the semaphore if it does not exist O_EXCL error if create and semaphore exists
O_CREAT is specified,
requires an additional two arguments. mode specifies
the permissions for the semaphore as described in
chmod(2) and modified by the process'
umask value (see umask(2)). The
semaphore is created with an initial value, which must
be less than or equal to
O_EXCL is specified and
the semaphore exists,
fails. The check for the existence of the semaphore and the creation of the
semaphore are atomic with respect to all processes calling
When a new semaphore is created, it is given the user ID and group ID which correspond to the effective user and group IDs of the calling process. There is no visible entry in the file system for the created object in this implementation.
The returned semaphore descriptor is available to
the calling process until it is closed with
or until the caller exits or execs.
If a process makes repeated calls to
with the same name argument, the same descriptor is
returned for each successful call, unless
has been called on the semaphore in the interim.
fails for any reason, it will return a value of
SEM_FAILED and sets errno. On
success, it returns a semaphore descriptor.
The named semaphore is opened unless:
O_CREATis specified, the object does not exist, and permission to create the semaphore is denied.
O_EXCLwere specified and the semaphore exists.
sem_open() operation was interrupted by a signal.
shm_open() operation is not supported; or
O_CREATis specified and value exceeds
O_CREATis not set and the named semaphore does not exist.
O_CREATis specified, the file does not exist, and there is insufficient space available to create the semaphore.
sem_open() is specified in the POSIX
Realtime Extension (1003.1b-1993/1003.1i-1995).
|June 8, 2000||Darwin|