VMS Help
CRTL, sem_open
*Conan The Librarian
|
Opens/creates a named semaphore for use by a process.
This function is supported on OpenVMS Integrity servers and
Alpha only.
Format
#include <semaphore.h>
sem_t *sem_open (const char *name, int ooption...) ;
name
a string naming the semaphore object.
ooption
Specifies whether the semaphore is to be created (O_CREAT option
bit set) or only opened (O_CREAT option bit clear). If O_CREAT is
set, the O_EXCL option bit may additionally be set to specify
that the call should fail if a semaphore of the same name
already exists. The O_CREAT and O_EXCL options are defined in
the <fcntl.h> header file.
mode
The semaphore's permission bits. This argument is used only when
the semaphore is being created.
value
The initial value to be given to the semaphore. This argument is
used only when the semaphore is being created.
Use the sem_open function to establish the connection between a
named semaphore and a process. Subsequently, the calling process
can reference the semaphore by using the address returned from
the call. The semaphore is available in subsequent calls to sem_
wait, sem_trywait, sem_post, and sem_getvalue functions. The
semaphore remains usable by the process until the semaphore is
closed by a successful call to the sem_close function.
The O_CREAT option bit in the ooption parameter controls whether
the semaphore is created or only opened by the call to sem_open.
A created semaphore's user ID is set to the user ID of the
calling process and its group ID is set to a system default group
or to the group ID of the process. The semaphore's permission
bits are set to the value of the mode argument, except for those
set in the file mode creation mask of the process.
After a semaphore is created, other processes can open the
semaphore by calling sem_open with the same value for the name
argument.
sem Successful completion. The function opens
the semaphore and returns the semaphore's
descriptor.
sem_failed Indicates an error. The function sets errno to
one of the following values:
o EACCES-The named semaphore exists and
the permissions specified by ooption are
denied, or the named semaphore does not
exist and the permissions specified by
ooption are denied.
o EEXIST-O_CREAT and O_EXCL are set, and the
named semaphore already exists.
o EINVAL-The sem_open operation is not
supported for the given name. Or, O_CREAT
was specified in ooption and value was
greater than {SEM_VALUE_MAX}.
o EMFILE-Too many semaphore descriptors or
file descriptors are currently in use by
this process.
o ENAMETOOLONG-The length of the name string
exceeds {PATH_MAX}, or a pathname component
is longer than {NAME_MAX} while {_POSIX_NO_
TRUNC} is in effect.
o ENFILE-Too many semaphores are currently
open in the system. ENOENT O_CREAT is
not set, and the named semaphore does not
exist.
o ENOSPC-Insufficient space exists for the
creation of a new named semaphore.
o EVMSERR-OpenVMS specific nontranslatable
error code.