#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h> int
semget (key_t key int nsems int flag);
DESCRIPTION
Based on the values of
Fa key
and
Fa flag ,
semget ();
returns the identifier of a newly created or previously existing
set of semaphores.
The key
is analogous to a filename: it provides a handle that names an
IPC object.
There are three ways to specify a key:
IPC_PRIVATE may be specified, in which case a new IPC object
will be created.
An integer constant may be specified.
If no IPC object corresponding
to
Fa key
is specified and the IPC_CREAT bit is set in
Fa flag ,
a new one will be created.
The
ftok(3)
function
may be used to generate a key from a pathname.
The mode of a newly created IPC object is determined by
OR 'ing
the following constants into the
Fa flag
argument:
SEM_R
Read access for user.
SEM_A
Alter access for user.
( SEM_R>>3
Read access for group.
( SEM_A>>3
Alter access for group.
( SEM_R>>6
Read access for other.
( SEM_A>>6
Alter access for other.
If a new set of semaphores is being created,
Fa nsems
is used to indicate the number of semaphores the set should contain.
Otherwise,
Fa nsems
may be specified as 0.
RETURN VALUES
The
semget ();
system call
returns the id of a semaphore set if successful; otherwise, -1
is returned and
errno
is set to indicate the error.
ERRORS
The
semget ();
system call
will fail if:
Bq Er EACCES
Access permission failure.
Bq Er EEXIST
IPC_CREAT and IPC_EXCL were specified, and a semaphore set
corresponding to
Fa key
already exists.
Bq Er EINVAL
The number of semaphores requested exceeds the system imposed maximum
per set.
Bq Er ENOSPC
Insufficiently many semaphores are available.
Bq Er ENOSPC
The kernel could not allocate a
Fa struct semid_ds .
Bq Er ENOENT
No semaphore set was found corresponding to
Fa key ,
and IPC_CREAT was not specified.