IPC 5

中文man手册

IPC

NAME
SYNOPSIS æ»è§
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