IPC 5
目录
IPC
NAMESYNOPSIS æ»è§
DESCRIPTION
èµæºè®¿é®æé
æ¶æ¯éå
ä¿¡å·ç¯éå
å±äº«ååæ®µ
åè§
[䏿çç»´æ¤äºº]
[ä¸æçææ°æ´æ°]
ãä¸å½ Linux 论å man æå页翻è¯è®¡åã:
è·
NAME
ipc - System V è¿ç¨é´éä¿¡æºå¶
SYNOPSIS æ»è§
# include
<sys/types.h>
# include <sys/ipc.h>
# include <sys/msg.h>
# include <sys/sem.h>
# include <sys/shm.h>
DESCRIPTION
æ¬æå页æ¶å System V è¿ç¨é´éä¿¡æºå¶å¨ Linux ä¸çå®ç°: æ¶æ¯éå, ä¿¡å·ç¯éå, 以åå±äº«ååæ®µ. ä¸é¢æå° èµæº æ¶, å°±æ¯æä¸é¢è¿äºéä¿¡æºå¶ä¸çä¸ç§.
èµæºè®¿é®æé
对æ¯ä¸ªèµæº, ç³»ç»ç¨ä¸ä¸ªå±æç struct ipc_perm ç»ææ¥åæ¾æéä¿¡æ¯, 以确å®ä¸ä¸ª ipc æä½æ¯å¦å¯è®¿é®è¯¥èµæº. å¨ <sys/ipc.h> ä¸å®ä¹äº ipc_perm, å¶æåå¦ä¸:
|
ushort cuid; |
/* å建è uid */ |
|||
|
ushort cgid; |
/* å建è gid */ |
|||
|
ushort uid; /* ææè uid */ |
||||
|
ushort gid; /* ææè gid */ |
||||
|
ushort mode; /* 读/åæé */ |
ç»æ ipc_perm çæå mode çä½ä¹ä½å®ä¹äºå¯¹è¯¥èµæºç访é®è®¸ å¯, 以确å®ä¸ä¸ªæ§è¡äº ipc ç³»ç»è°ç¨çè¿ç¨è½å¦è®¿é®è¯¥èµæº. å¶è§£ éå¦ä¸:
|
0400 |
ç¨æ·å¯è¯». |
||
|
0200 |
ç¨æ·å¯å. |
||
|
0040 |
ç»æåå¯è¯». |
||
|
0020 |
ç»æåå¯å. |
||
|
0004 |
å¶ä»ç¨æ·å¯è¯». |
||
|
0002 |
å¶ä»ç¨æ·å¯å. |
ç³»ç»æ²¡æä½¿ç¨æ§è¡ä½ 0100, 0010 å 0001. å¦å¤, è¿éç "å¯å" ç æäºä¿¡å·ç¯éåéç "坿´æ¹".
å¨ <sys/ipc.h> ç³»ç»å¤´æä»¶éè¿å®ä¹äºå¦ä¸ç¬¦å·å¸¸æ°:
|
IPC_CREAT |
妿 key ä¸åå¨å°±å建. |
|||
|
IPC_EXCL |
妿 key å·²ç»åå¨å失败. |
|||
|
IPC_NOWAIT |
å¦æè¯·æ±å¿é¡»çå¾, 产çé误. |
|||
|
IPC_PRIVATE |
ç§æ key. |
|||
|
IPC_RMID |
å é¤èµæº. |
|||
|
IPC_SET |
è®¾ç½®èµæºé项. |
|||
|
IPC_STAT |
åå¾èµæºé项. |
请注æ IPC_PRIVATE æ¯ä¸ä¸ª key_t ç±»å, èå«ç符å·å¸¸æ°é½æ¯æ å¿å,å®ä»¬çå¯ä»¥æ( OR )å¨ä¸èµ·å½¢æ int ç±»å.
æ¶æ¯éå
æ¶æ¯éåç±æ£æ´æ° (å®ç msqid) å¯ä¸æ è¯, å¶ç»æä½ struct msquid_ds å¨ <sys/msg.h> ä¸å®ä¹, åå«å¦ä¸æå:
struct
ipc_perm msg_perm;
ushort msg_qnum; /*
éå䏿¶æ¯æ°ç®
*/
ushort msg_qbytes; /*
䏿¡éåæå¤§åèæ°
*/
ushort msg_lspid; /*
ä¸ä¸æ¬¡ msgsnd
è°ç¨ç pid */
ushort msg_lrpid; /*
ä¸ä¸æ¬¡ msgrcv
è°ç¨ç pid */
time_t msg_stime; /*
ä¸ä¸æ¬¡ msgsnd
çæ¶é´ */
time_t msg_rtime; /*
ä¸ä¸æ¬¡ msgrcv
çæ¶é´ */
time_t msg_ctime; /*
ä¸ä¸æ¬¡ä¿®æ¹æ¶é´
*/
|
msg_perm |
ipc_perm ç»æ, ææäºå¯¹è¯¥æ¶æ¯éåçè®¿é®æé. |
|||
|
msg_qnum |
该éåå½åçæ¶æ¯æ»æ°. |
|||
|
msg_qbytes |
该éåæåè®¸çæ¶æ¯æ£ææå¤§åèæ»æ°. |
|||
|
msg_lspid |
æåå msgsnd ç³»ç»è°ç¨çè¿ç¨ç ID. |
|||
|
msg_lrpid |
æåå msgrcv ç³»ç»è°ç¨çè¿ç¨ç ID. |
|||
|
msg_stime |
æè¿å msgsnd ç³»ç»è°ç¨çæ¶é´. |
|||
|
msg_rtime |
æè¿å msgrcv ç³»ç»è°ç¨çæ¶é´. |
|||
|
msg_ctime |
æå䏿¬¡æ¹å msqid_ds ç»ææåçæ¶é´. |
ä¿¡å·ç¯éå
ä¿¡å·ç¯éåç±æ£æ´æ° (å®ç semid) å¯ä¸æ è¯, å¹¶æä¸ä¸ªä¸ä¹å³èçç»æä½ struct semid_ds å®å¨ <sys/sem.h> ä¸å®ä¹, åå«å¦ä¸æå:
struct
ipc_perm sem_perm;
time_t sem_otime; /*
ä¸ä¸æ¬¡æä½çæ¶é´
*/
time_t sem_ctime; /*
ä¸ä¸æ¬¡ä¿®æ¹çæ¶é´
*/
ushort sem_nsems; /*
éåä¸ä¿¡å·ç¯æ°ç®
*/
|
sem_perm |
ipc_perm ç»æ, ææå¯¹è¯¥ä¿¡å·ç¯éåçè®¿é®æé. | ||
|
sem_otime |
æè¿å semop ç³»ç»è°ç¨çæ¶é´. | ||
|
sem_ctime |
æè¿å semctl ç³»ç»è°ç¨çæ¶é´, 该è°ç¨ä¿®æ¹äºä¸é¢ç»æçä¸ä¸ªæå æèæ¹åäºå±äºè¯¥éåçä¸ä¸ªä¿¡å·ç¯. | ||
|
sem_nsems |
该信å·ç¯éåçä¿¡å·ç¯æ°ç®. éå䏿¯ä¸ªä¿¡å·ç¯é½å¯ä»¥ç¨ä» 0 å° sem_nsems-1 çä¸ä¸ªéè´æ´æ°æ¥å¼ç¨. |
ä¸ä¸ªä¿¡å·ç¯å°±æ¯ä¸ä¸ª struct sem ç»æ, åå«å¦ä¸æå:
ushort
semval; /*
ä¿¡å·ç¯å¼
*/
short sempid; /*
ä¸ä¸æ¬¡æä½çè¿ç¨ç
pid */
ushort semncnt; /*
çå¾å¢å semval
å¼çè¿ç¨æ°ç®
*/
ushort semzcnt; /* çå¾ semval = 0
çè¿ç¨æ°ç®
*/
|
semval |
该信å·ç¯å¼,æ¯ä¸ä¸ªéè´æ´æ°. |
|||
|
sempid |
æåä¸ä¸ªå¯¹è¯¥ä¿¡å·ç¯åæä½çè¿ç¨ ID. |
|||
|
semncnt |
çå¾å¢å semval çè¿ç¨æ°. |
|||
|
semznt |
çå¾ semval åæ 0 çè¿ç¨æ°. |
å±äº«ååæ®µ
å±äº«ååæ®µç±æ£æ´æ° (å®ç shmid) å¯ä¸æ è¯, æä¸ä¸ªå³èçç»æç±»å struct shmid_ds å¨ <sys/shm.h> ä¸å®ä¹, åå«å¦ä¸æå:
struct
ipc_perm shm_perm;
int shm_segsz; /*
段尺寸 */
ushort shm_cpid; /* å建è
pid */
ushort shm_lpid; /*
ä¸ä¸æ¬¡æä½çè¿ç¨ç
pid */
short shm_nattch; /*
ç®åéççè¿ç¨æ°ç®
*/
time_t shm_atime; /*
ä¸ä¸æ¬¡éççæ¶é´
*/
time_t shm_dtime; /*
ä¸ä¸æ¬¡è±ç¦»çæ¶é´
*/
time_t shm_ctime; /*
ä¸ä¸æ¬¡ä¿®æ¹çæ¶é´
*/
|
shm_perm |
ipc_perm ç»æ, ææå¯¹å±äº«ååæ®µçè®¿é®æé. |
|||
|
shm_segsz |
å±äº«ååæ®µç大å°, 以åè为åä½. |
|||
|
shm_cpid |
å建该å±äº«ååæ®µçè¿ç¨ç ID. |
|||
|
shm_lpid |
æåæ§è¡ shmat æè shmdt ç³»ç»è°ç¨çè¿ç¨ ID. |
|||
|
shm_nattch |
å½å对该å±äº«ååæ®µçæ´»è·è¿æ¥æ°. |
|||
|
shm_atime |
æåå shmat ç³»ç»è°ç¨çæ¶é´. |
|||
|
shm_dtime |
æåå shmdt ç³»ç»è°ç¨çæ¶é´. |
|||
|
shm_ctime |
æåå shmctl ç³»ç»è°ç¨çæ¶é´, å¦æè¯¥è°ç¨æ¹åäº shmid_ds. |
åè§
ftok(3), msgctl(2), msgget(2), msgrcv(2), msgsnd(2), semctl(2), semget(2), semop(2), shmat(2), shmctl(2), shmget(2), shmdt(2).
[䏿çç»´æ¤äºº]
name <email>
[ä¸æçææ°æ´æ°]
2001/02/02
ãä¸å½ Linux 论å man æå页翻è¯è®¡åã:
http://cmpp.linuxforum.net
è·
æ¬é¡µé¢ä¸æçç±ä¸æ
man
æå页计åæä¾ã
䏿 man
æå页计åï¼https://github.com/man-pages-zh/manpages-zh