基于内存的通信之一 “内核共享消息队列”
2014-03-05 09:35
405 查看
编程步骤:
1.创建共享消息队列/得到消息队列
2.操作消息队列(发送、接收等)
3.删除队列
案例应用:
创建两个进程A、B
其中A 如下:
B进程如下:
1.创建共享消息队列/得到消息队列
2.操作消息队列(发送、接收等)
3.删除队列
案例应用:
创建两个进程A、B
其中A 如下:
#include <unistd.h> #include <sys/ipc.h> #include <sys/msg.h> #include <stdio.h> #include <stdlib.h> #include <string.h> struct msgbuf { long type; char data[32]; }; main() { key_t key; int msgid; int i; struct msgbuf msg; //1创建消息队列 key=ftok(".",200); if(key==-1) printf("ftok err:%m\n"),exit(-1); msgid=msgget(key,0/*IPC_CREAT|IPC_EXCL|0666*/); if(msgid==-1)printf("get err:%m\n"),exit(-1); //2构造消息 //3发送消息 for(i=1;i<=10;i++) { bzero(msg.data,sizeof(msg.data)); msg.type=1; sprintf(msg.data,"MessageI:%d",i); msgsnd(msgid,&msg,sizeof(msg.data),0); } for(i=1;i<=10;i++) { bzero(msg.data,sizeof(msg.data)); msg.type=2; sprintf(msg.data,"MessageII:%d",i); msgsnd(msgid,&msg,sizeof(msg.data),0); } //4删除队列 //msgctl(msgid,IPC_RMID,0); }
B进程如下:
#include <unistd.h> #include <sys/ipc.h> #include <sys/msg.h> #include <stdio.h> #include <stdlib.h> #include <string.h> struct msgbuf { long type; char data[32]; }; main() { key_t key; int msgid; int i; struct msgbuf msg; //1得到消息队列 key=ftok(".",200); if(key==-1) printf("ftok err:%m\n"),exit(-1); msgid=msgget(key,0); if(msgid==-1)printf("get err:%m\n"),exit(-1); //2构造消息 //3接收消息 while(1) { bzero(&msg,sizeof(msg)); msg.type=2; msgrcv(msgid,&msg,sizeof(msg.data),2,0); printf("%s\n",msg.data); } }
相关文章推荐
- 管道、消息队列、共享内存几种IPC通信,简单的代码
- uc笔记09---进程通信,管道,进程间通信,共享内存,消息队列,信号量,IPC 命令
- linux基础编程:进程通信之System V IPC:消息队列,信号量,共享内存
- 进程间的通信方式--信号、管道、消息队列、共享内存
- vxworks中任务间的通信支持信号量、消息队列、管道、信号、事件、共享内存等
- linux基础编程:进程通信之System V IPC:消息队列,信号量,共享内存
- IPC—进程间的通信(信号量,共享内存,消息队列)
- linux学习---基于内存的IPC(共享内存,信号量数组,消息队列)
- php-通过共享内存实现消息队列和进程通信
- 基于内存的通信之一 “内核共享内存”
- 操作系统 进程间的通信 之 信号 消息队列 共享内存 浅析
- vxworks中任务间的通信支持信号量、消息队列、管道、信号、事件、共享内存等
- vxworks中任务间的通信支持信号量、消息队列、管道、信号、事件、共享内存等
- 基于多线程的共享内存模型和基于actor的消息通信模型
- Linux c 基于内存的进程通信—共享内存、共享队列(消息队列)
- 【网络编程基础】Linux下进程通信方式(共享内存,管道,消息队列,Socket)
- Linux c 基于内存的进程通信—共享内存、共享队列(消息队列)
- 父子进程通信的两种方式--消息队列和共享内存
- linux 共享内存 消息队列 udp通信
- php中对共享内存,消息队列的操作