shmctl(S) 6 January 1993 shmctl(S) Name shmctl - shared memory control operations Syntax cc . . . -lc #include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h> int shmctl (shmid, cmd, buf) int shmid, cmd; struct shmid_ds *buf; Description The shmctl system call provides a variety of shared memory control opera- tions as specified by cmd. The following cmds are available: IPCRMID Remove the shared memory identifier specified by shmid from the system and destroy the shared memory segment and data structure associated with it. This cmd can only be executed by a process that has an effective user ID equal to that of super user, or to the value of shmperm.cuid or shmperm.uid in the data structure associated with shmid. IPCSET 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 /* only low 9 bits */ This cmd can only be executed by a process that has an effec- tive user ID equal to that of super user, or to the value of shmperm.cuid or shmperm.uid in the data structure associ- ated with shmid. IPCSTAT Place the current value of each member of the data structure associated with shmid into the structure pointed to by buf. SHMLOCK Lock the shared memory segment specified by shmid in memory. This cmd can only be executed by a process that has an effec- tive user ID equal to super user. SHMUNLOCK Unlock the shared memory segment specified by shmid. This cmd can only be executed by a process that has an effective user ID equal to super user. Return value Upon successful completion, a value of 0 is returned. Otherwise, a value of -1 is returned, and errno is set to indicate the error. Diagnostics The shmctl system call fails if one or more of the following is true: [EACCES] cmd is equal to IPCSTAT and {READ} operation permission is denied to the calling process. [EFAULT] buf points to an illegal address. [EINVAL] shmid is not a valid shared memory identifier. [EINVAL] cmd is not a valid command. [ENOMEM] cmd is equal to SHMLOCK, and there is not enough memory. [ENOSYS The functionality is not supported on this implementation. [EPERM] cmd is equal to IPCRMID or IPCSET, and the effective user ID of the calling process is not equal to that of super user or to the value of shmperm.cuid or shmperm.uid in the data structure associated with shmid. [EPERM] cmd is equal to SHMLOCK or SHMUNLOCK, and the effective user ID of the calling process is not equal to that of super user. Notes The user must explicitly remove shared memory segments after the last reference to them has been removed. See also shmget(S), shmop(S) Standards conformance shmctl is conformant with: AT&T SVID Issue 2; and X/Open Portability Guide, Issue 3, 1989.