Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

FreeBSD 11.0 - man page for shmctl (freebsd section 2)

SHMCTL(2)						      BSD System Calls Manual							 SHMCTL(2)

shmctl -- shared memory control
Standard C Library (libc, -lc)
#include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h> int shmctl(int shmid, int cmd, struct shmid_ds *buf);
Performs the action specified by cmd on the shared memory segment identified by shmid: IPC_STAT Fetch the segment's 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 segment's struct shmid_ds to match those of the struct pointed to by buf. The calling process's effective uid must match either shm_perm.uid or shm_perm.cuid, or it must have supe- ruser 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 process's effective uid must match shm_perm.uid or shm_perm.cuid, or the process must have superuser privileges. The shmid_ds structure is defined as follows: struct shmid_ds { struct ipc_perm shm_perm; /* operation permission structure */ size_t 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 */ int 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() */ };
The shmctl() function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.
The shmctl() system call 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.
shmat(2), shmdt(2), shmget(2), ftok(3)
July 17, 1995 BSD