SHMCTL(2) BSD Programmer's Manual SHMCTL(2)NAMEshmctl - shared memory control
SYNOPSIS
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
int
shmctl(int shmid, int cmd, struct shmid_ds *buf);
DESCRIPTION
Performs the action specified by cmd on the shared memory segment identi-
fied by shmid:
IPC_STAT Fetch the segment's struct shmid_ds, storing it in the memo-
ry pointed to by buf.
IPC_SET Changes the shm_perm.uid, shm_perm.gid, and shm_perm.mode
members of the segment's struct shmid_ds to match those of
the struct pointed to by buf. The calling process's effec-
tive uid must match either shm_perm.uid or shm_perm.cuid, or
it must have superuser privileges.
IPC_RMID Removes the segment from the system. The removal will not
take effect until all processes having attached the segment
have exited; however, once the IPC_RMID operation has taken
place, no further processes will be allowed to attach the
segment. For the operation to succeed, the calling pro-
cess's effective uid must match shm_perm.uid or
shm_perm.cuid, or the process must have superuser privi-
leges.
The shmid_ds struct is defined as follows:
struct shmid_ds {
struct ipc_perm shm_perm; /* operation permission structure */
int shm_segsz; /* size of segment in bytes */
pid_t shm_lpid; /* process ID of last shared memory op */
pid_t shm_cpid; /* process ID of creator */
short shm_nattch; /* number of current attaches */
time_t shm_atime; /* time of last shmat() */
time_t shm_dtime; /* time of last shmdt() */
time_t shm_ctime; /* time of last change by shmctl() */
void *shm_internal; /* sysv compatability */
};
RETURN VALUES
Upon successful completion, shmctl() returns 0. Otherwise, it returns -1
and errno is set to indicate the error.
ERRORSShmctl() will fail if:
[EINVAL] Invalid operation, or no shared memory segment was found
corresponding to shmid.
[EPERM] The calling process's effective uid does not match the uid
of the shared memory segment's owner or creator.
[EACCES] Permission denied due to mismatch between operation and
mode of shared memory segment.
SEE ALSOshmget(2), shmat(2), shmdt(2), ftok(3)4th Berkeley Distribution July 3, 1996 2