sem_opensem_closesem_unlink
- named semaphore operations
LIBRARY
Lb libc
SYNOPSIS
#include <semaphore.h> sem_t *
sem_open (const char *name int oflag ...); int
sem_close (sem_t *sem); int
sem_unlink (const char *name);
DESCRIPTION
The
sem_open ();
function creates or opens the named semaphore specified by
Fa name .
The returned semaphore may be used in subsequent calls to
sem_getvalue3,
sem_wait3,
sem_trywait3,
sem_post3,
and
sem_close (.);
The following bits may be set in the
Fa oflag
argument:
O_CREAT
Create the semaphore if it does not already exist.
The third argument to the call to
sem_open ();
must be of type
Vt 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
Vt unsigned int
and specifies the initial value for the semaphore,
and must be no greater than
SEM_VALUE_MAX
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
Fa name .
Resources allocated to the semaphore are only deallocated when all
processes that have the semaphore open close it.
RETURN VALUES
If successful,
the
sem_open ();
function returns the address of the opened semaphore.
If the same
Fa 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
ERRORS
The
sem_open ();
function will fail if:
Bq Er EACCES
The semaphore exists and the permissions specified by
Fa oflag
at the time it was created deny access to this process.
Bq Er EACCES
The semaphore does not exist, but permission to create it is denied.
Bq Er EEXIST
O_CREAT
and
O_EXCL
are set but the semaphore already exists.
Bq Er EINTR
The call was interrupted by a signal.
Bq Er EINVAL
The
sem_open ();
operation is not supported for the given
Fa name .
Bq Er EINVAL
The
Fa value
argument is greater than
SEM_VALUE_MAX
Bq Er ENAMETOOLONG
The
Fa name
argument is too long.
Bq Er ENFILE
The system limit on semaphores has been reached.
Bq Er ENOENT
O_CREAT
is not set but the named semaphore does not exist.
Bq Er ENOSPC
There is not enough space to create the semaphore.
The
sem_open (,);
sem_close (,);
and
sem_unlink ();
functions conform to
St -p1003.1-96 .
HISTORY
Support for named semaphores first appeared in
Fx 5.0 .
BUGS
This implementation places strict requirements on the value of
Fa name :
it must begin with a slash
(`/'
)
contain no other slash characters,
and be less than 14 characters in length
not including the terminating null character.