table of contents
other versions
- wheezy 3.44-1
- jessie 3.74-1
- jessie-backports 4.10-2~bpo8+1
- testing 4.10-2
- unstable 4.10-2
SVIPC(7) | Linux Programmer's Manual | SVIPC(7) |
NAME¶
svipc - System V interprocess communication mechanismsSYNOPSIS¶
#include <sys/msg.h> #include <sys/sem.h> #include <sys/shm.h>
DESCRIPTION¶
This manual page refers to the Linux implementation of the System V interprocess communication (IPC) mechanisms: message queues, semaphore sets, and shared memory segments. In the following, the word resource means an instantiation of one among such mechanisms.Resource Access Permissions¶
For each resource, the system uses a common structure of type struct ipc_perm to store information needed in determining permissions to perform an IPC operation. The ipc_perm structure includes the following members:struct ipc_perm { uid_t cuid; /* creator user ID */ gid_t cgid; /* creator group ID */ uid_t uid; /* owner user ID */ gid_t gid; /* owner group ID */ unsigned short mode; /* r/w permissions */ };
The mode member of the ipc_perm structure defines, with its lower 9 bits, the access permissions to the resource for a process executing an IPC system call. The permissions are interpreted as follows:
0400 Read by user. 0200 Write by user.Bits 0100, 0010, and 0001 (the execute bits) are unused by the system. Furthermore, "write" effectively means "alter" for a semaphore set. The same system header file also defines the following symbolic constants:0040 Read by group. 0020 Write by group.0004 Read by others. 0002 Write by others.
- IPC_CREAT
- Create entry if key doesn't exist.
- IPC_EXCL
- Fail if key exists.
- IPC_NOWAIT
- Error if request must wait.
- IPC_PRIVATE
- Private key.
- IPC_RMID
- Remove resource.
- IPC_SET
- Set resource options.
- IPC_STAT
- Get resource options.
Message Queues¶
A message queue is uniquely identified by a positive integer (its msqid) and has an associated data structure of type struct msqid_ds, defined in <sys/msg.h>, containing the following members:struct msqid_ds { struct ipc_perm msg_perm; msgqnum_t msg_qnum; /* no of messages on queue */ msglen_t msg_qbytes; /* bytes max on a queue */ pid_t msg_lspid; /* PID of last msgsnd(2) call */ pid_t msg_lrpid; /* PID of last msgrcv(2) call */ time_t msg_stime; /* last msgsnd(2) time */ time_t msg_rtime; /* last msgrcv(2) time */ time_t msg_ctime; /* last change time */ };
- msg_perm
- ipc_perm structure that specifies the access permissions on the message queue.
- msg_qnum
- Number of messages currently on the message queue.
- msg_qbytes
- Maximum number of bytes of message text allowed on the message queue.
- msg_lspid
- ID of the process that performed the last msgsnd(2) system call.
- msg_lrpid
- ID of the process that performed the last msgrcv(2) system call.
- msg_stime
- Time of the last msgsnd(2) system call.
- msg_rtime
- Time of the last msgrcv(2) system call.
- msg_ctime
- Time of the last system call that changed a member of the msqid_ds structure.
Semaphore Sets¶
A semaphore set is uniquely identified by a positive integer (its semid) and has an associated data structure of type struct semid_ds, defined in <sys/sem.h>, containing the following members:struct semid_ds { struct ipc_perm sem_perm; time_t sem_otime; /* last operation time */ time_t sem_ctime; /* last change time */ unsigned long sem_nsems; /* count of sems in set */ };
- sem_perm
- ipc_perm structure that specifies the access permissions on the semaphore set.
- sem_otime
- Time of last semop(2) system call.
- sem_ctime
- Time of last semctl(2) system call that changed a member of the above structure or of one semaphore belonging to the set.
- sem_nsems
- Number of semaphores in the set. Each semaphore of the set is referenced by a nonnegative integer ranging from 0 to sem_nsems-1.
struct sem { int semval; /* semaphore value */ int sempid; /* PID for last operation */ };
- semval
- Semaphore value: a nonnegative integer.
- sempid
- ID of the last process that performed a semaphore operation on this semaphore.
Shared Memory Segments¶
A shared memory segment is uniquely identified by a positive integer (its shmid) and has an associated data structure of type struct shmid_ds, defined in <sys/shm.h>, containing the following members:struct shmid_ds { struct ipc_perm shm_perm; size_t shm_segsz; /* size of segment */ pid_t shm_cpid; /* PID of creator */ pid_t shm_lpid; /* PID, last operation */ shmatt_t shm_nattch; /* no. of current attaches */ time_t shm_atime; /* time of last attach */ time_t shm_dtime; /* time of last detach */ time_t shm_ctime; /* time of last change */ };
- shm_perm
- ipc_perm structure that specifies the access permissions on the shared memory segment.
- shm_segsz
- Size in bytes of the shared memory segment.
- shm_cpid
- ID of the process that created the shared memory segment.
- shm_nattch
- Number of current alive attaches for this shared memory segment.
- shm_atime
- Time of the last shmat(2) system call.
- shm_dtime
- Time of the last shmdt(2) system call.
- shm_ctime
- Time of the last shmctl(2) system call that changed shmid_ds.
SEE ALSO¶
ipc(2), msgctl(2), msgget(2), msgrcv(2), msgsnd(2), semctl(2), semget(2), semop(2), shmat(2), shmctl(2), shmdt(2), shmget(2), ftok(3)COLOPHON¶
This page is part of release 3.44 of the Linux man-pages project. A description of the project, and information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/.2012-05-31 | Linux |