NAME
shmctl – XSI shared memory control operations
SYNOPSIS
1 2 |
#include <sys/shm.h> int shmctl(int shmid, int cmd, struct shmid_ds *buf); |
DESCRIPTION
The shmctl() function operates on XSI shared memory (see the Base Definitions volume of IEEE Std 1003.1-2001, Section 3.340, Shared Memory Object). It is unspecified whether this function interoperates with the realtime interprocess communication facilities defined in Realtime.
The shmctl() function provides a variety of shared memory control operations as specified by cmd. The following values for cmd are available:
IPC_STAT
Place the current value of each member of the shmid_ds data structure associated with shmid into the structure pointed to by buf. The contents of the structure are defined in
IPC_SET
Set the value of the following members of the shmid_ds 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 Low-order nine bits.
IPC_SET can only be executed by a process that has an effective user ID equal to either that of a process with appropriate privileges or to the value of shm_perm.cuid or shm_perm.uid in the shmid_ds data structure associated with shmid.
IPC_RMID
Remove the shared memory identifier specified by shmid from the system and destroy the shared memory segment and shmid_ds data structure associated with it. IPC_RMID can only be executed by a process that has an effective user ID equal to either that of a process with appropriate privileges or to the value of shm_perm.cuid or shm_perm.uid in the shmid_ds data structure associated with shmid.
RETURN VALUE
Upon successful completion, shmctl() shall return 0; otherwise, it shall return -1 and set errno to indicate the error.
ERRORS
The shmctl() function shall fail if:
[EACCES]
The argument cmd is equal to IPC_STAT and the calling process does not have read permission; see XSI Interprocess Communication.
[EINVAL]
The value of shmid is not a valid shared memory identifier, or the value of cmd is not a valid command.
[EPERM]
The argument cmd is equal to IPC_RMID or IPC_SET and the effective user ID of the calling process is not equal to that of a process with appropriate privileges and it is not equal to the value of shm_perm.cuid or shm_perm.uid in the data structure associated with shmid.
The shmctl() function may fail if:
[EOVERFLOW]
The cmd argument is IPC_STAT and the gid or uid value is too large to be stored in the structure pointed to by the buf argument.