消息队列
来源:互联网 发布:物理虚拟实验室软件 编辑:程序博客网 时间:2024/06/16 13:37
XSIPC(消息队列,信号,和共享内存)
消息队列提供一种从一个进程向另一进程发送数据块的方法;每个数据块都有自己的类型,与管道不同的的是,消息队列是基于消息的,而管道是基于字节流的;
//comm.h
#ifndef _COMM_H_#define _COMM_H#include<stdio.h>#include<sys/types.h>#include<sys/ipc.h>#include<sys/msg.h>#include<string.h>#define PATHNAME "."#define PROJ_ID 0x6664#define SERVER_TYPE 1#define CLIENT_TYPE 2struct msgbuf{long mtype;char mtext[1024];};int creatMsgQueue();int sendMsg();int rsvMsg();int destoryMsg();#endif
#include"common.h"int commQueue(int flag){key_t _key= ftok(PATHNAME,PROJ_ID);if(_key<0){perror("ftok");return -1;}int msgid=msgget(_key,flag);if(msgid<0){perror("msgget");return -1;}return msgid;}int creatMsgQueue(){return commQueue(IPC_CREAT|IPC_EXCL|0666);}int getMsgQueue(){return commQueue(IPC_CREAT);}int sendMsg(int msgid,int who,char* msg){struct msgbuf buf;strcpy(buf.mtext,msg);buf.mtype=who;if(msgsnd(msgid,&buf,1024,0)<0){perror("msgsnd");return -1;} return 0;}int rsvMsg(int msgid,int who,char* out){struct msgbuf buf;if(msgrcv(msgid,(void *)&buf,1024,who,0)<0){perror("msgrcv");return -1;}strcpy(out,buf.mtext);return 0;}//没有销毁的代码;
//server.c
int main(){char buf[1024];int msgid=creatMsgQueue();while(1){//xian du zai xiersvMsg(msgid,CLIENT_TYPE,buf);printf("%s\n",buf);printf("enter data ");ssize_t s=read(0,buf,sizeof(buf)-1);if(s>0){buf[s-1]=0;sendMsg(msgid,SERVER_TYPE,buf);}}}
int main(){char buf[1024];int msgid=getMsgQueue();//printf("%d",msgid);while(1){//xian xie zai dubuf[0]=0;printf("enter data ");fflush(stdout);ssize_t s=read(0,buf,sizeof(buf)-1);if(s>0){buf[s-1]=0;sendMsg(msgid,CLIENT_TYPE,buf);}//char bufrcv[1024];rsvMsg(msgid,SERVER_TYPE,buf);printf("%s",buf);}}使用ipcs -q可以查看消息队列;
使用ipcrm -q 可以删除消息队列;
阅读全文
0 0
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- <>消息队列
- 消息队列
- bzoj2251[2010Beijing Wc]外星联络 后缀数组
- 带你实现ViewGroup规定行数、item居中的流式布局
- Android之网络技术
- A-Fast-RCNN: Hard positive generation via adversary for object detection
- soap实例
- 消息队列
- 在linux下配置ipv6 互通libvirt
- 泛型与非泛型组合
- 关于Activity跳转另一个Activity指定的fragment的解决方法
- 闭关修炼之struts2框架1
- iOS appledoc自动生成API文档
- memcached缓存与mybatis的整合
- 【bzoj1036】[ZJOI2008]树的统计Count
- (8)高通AP10.4开发者指南——WLAN(2.2 上下文及同步处理)