一、消息队列相关API
#include<sys/msg>
创建或打开消息队列:成功返回队列ID,失败返回-1
int msgget<key_t key,int flag>
添加消息,成功返回0,失败返回-1
int msgsnd(int msqid,const void *ptr,size_t size,int flag)
读取消息,成功返回消息数据长度,失败返回-1
int msgrcv(int msqid,void *ptr ,size_t size,long type,int flag)
//控制消息队列:成功返回0,失败返回-1
int msgctl(int msqid,int cmd,struct msqid_ds *buf);
(1)消息队列编程收发数据
msgSend.c的代码
msgGet.c的代码
发送与接收
(2).共享内存概述
进程间通信有6种:
1.无名管道
2.命名管道
3.消息队列
4.共享内存
先创建一个内存区域,A、B指向这块共享的内存区域,读取或者写入数据,释放共享内存,干掉共享内存。
5.信号
6.信号量
(2.1)共献内存编程实现
shmget(创建)、shmat(映射)、shmdt(释放)、shmctl(干掉)。
shmr.c的代码如下:
shmr.c代码如下
实现的效果:进程的另外一端接收到了数据