1.创建共享内存 shmget(key_t key, size_t size, int shmflg); // 如果key为宏,则key是0x00000000部分,若是ftok创建,则不是0x00000000开始,同时shmflg参数要|IPC_CREAT。 2.命令查看共享内存 ipcs -m 3.将共享内存映射到用户空间,减少访问内核空间的次数 void *shmat(int shmid, const void *shmaddr, int shmflg); 4.删除共享内存 int shmdt(const void *shmaddr); // 将映射出来的shmat内存删除,内核空间内存不动 5.删除共享内存标识符 int shmctl(int shmid, int cmd, struct shmid_ds *buf);
消息队列
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
1.创建消息队列 int msgget(key_t key,int msgflg); 2.删除消息队列 int msgctl(int msqid, int cmd, struct msqid_ds *buf); 3.命令查看消息队列 ipcs -q 4.消息队列发送 int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); 5.消息结构体 struct msgbuf { long mtype; char mtext[1]; } 6.消息队列接收 ssize_t msgrcv(int msqid, const void *msgp, size_t msgsz,long msgtyp,int msgflg);
信号量
1 2 3 4 5 6 7 8 9
1.获得信号量ID int semget(key_t key, int nsems, int semflg); 2.初始化信号量 int semctl(int semid, int semnum, int cmd, union semun arg); cmd: 1.IPC_STAT(获取信号量的属性) 2.IPC_SET(设置信号量的属性) 3.lPC_RMID(删除信号量) 4.SETVAL(设置信号量的值)