Fetch the segments "struct shmid_ds", storing it in the memory pointed to by buf.
IPC_SET
Changes the shm_perm.uid, shm_perm.gid, and shm_perm.mode members of the segments "struct shmid_ds" to match those of the struct pointed to by buf. The calling processs effective 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 processs effective uid must match shm_perm.uid or shm_perm.cuid, or the process must have superuser privileges.
The .Vt shmid_ds structure 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_tshm_atime; /* time of last shmat() */
time_tshm_dtime; /* time of last shmdt() */
time_tshm_ctime; /* time of last change by shmctl() */
void *shm_internal; /* sysv stupidity */
};