SHMCTL(2) System Calls SHMCTL(2)
NAME
shmctl - shared memory control operations
SYNOPSIS
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
int shmctl(
int shmid,
int cmd,
struct shmid_ds *buf);
DESCRIPTION
The
shmctl() function provides a variety of shared memory control
operations as specified by
cmd. The permission required for a shared
memory control operation is given as {
token}, where
token is the type of
permission needed. The types of permission are interpreted as follows:
00400 READ by user
00200 WRITE by user
00040 READ by group
00020 WRITE by group
00004 READ by others
00002 WRITE by others
See the
Shared Memory Operation Permissions section of
Intro(2) for more
information.
The following operations require the specified tokens:
IPC_STAT Place the current value of each member of the data
structure associated with
shmid into the structure pointed
to by
buf. The contents of this structure are defined in
Intro(2). {
READ}
IPC_SET Set the value of the following members of the data
structure associated with
shmid to the corresponding value
found in the structure pointed to by
buf:
shm_perm.uid
shm_perm.gid
shm_perm.mode /* access permission bits only */
This command can be executed only by a process that has
appropriate privileges or an effective user
ID equal to the
value of
shm_perm.cuid or
shm_perm.uid in the data
structure associated with
shmid.
IPC_RMID Remove the shared memory identifier specified by
shmid from
the system. The segment referenced by the identifier will
be destroyed when all processes with the segment attached
have either detached the segment or exited. If the segment
is not attached to any process when
IPC_RMID is invoked, it
will be destroyed immediately. This command can be executed
only by a process that has appropriate privileges or an
effective user ID equal to the value of
shm_perm.cuid or
shm_perm.uid in the data structure associated with
shmid.
SHM_LOCK Lock the shared memory segment specified by
shmid in
memory. This command can be executed only by a process that
has appropriate privileges.
SHM_UNLOCK Unlock the shared memory segment specified by
shmid. This
command can be executed only by a process that has
appropriate privileges.
A shared memory segment must be explicitly removed using
IPC_RMID before
the system can deallocate it and the resources it uses.
RETURN VALUES
Upon successful completion,
0 is returned. Otherwise,
-1 is returned and
errno is set to indicate the error.
ERRORS
The
shmctl() function will fail if:
EACCES The
cmd argument is equal to
IPC_STAT and
{READ} operation
permission is denied to the calling process.
EFAULT The
buf argument points to an illegal address.
EINVAL The
shmid argument is not a valid shared memory identifier;
or the
cmd argument is not a valid command or is
IPC_SET and
shm_perm.uid or
shm_perm.gid is not valid.
ENOMEM The
cmd argument is equal to
SHM_LOCK and there is not
enough memory, or the operation would exceed a limit or
resource control on locked memory.
EOVERFLOW The
cmd argument is
IPC_STAT and
uid or
gid is too large to
be stored in the structure pointed to by
buf.
EPERM The
cmd argument is equal to
IPC_RMID or
IPC_SET, the
effective user ID of the calling process is not equal to the
value of
shm_perm.cuid or
shm_perm.uid in the data structure
associated with
shmid, and {
PRIV_IPC_OWNER} is not asserted
in the effective set of the calling process.
The
cmd argument is equal to
SHM_LOCK or
SHM_UNLOCK and
{
PRIV_PROC_LOCK_MEMORY} is not asserted in the effective set
of the calling process.
ATTRIBUTES
See
attributes(7) for descriptions of the following attributes:
+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Standard |
+--------------------+-----------------+
SEE ALSO
ipcs(1),
Intro(2),
shmget(2),
shmop(2),
attributes(7),
privileges(7),
standards(7) April 10, 2007
SHMCTL(2)