system v消息队列demo(未编译)
来源:互联网 发布:网页源码 编辑:程序博客网 时间:2024/05/29 10:53
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/stat.h>
#include <sys/msg.h>
#define MSG_FILE "server.c"
#define BUFFER 255
#define PERM S_IRUSR|S_IWUSR
struct msgtype{
long mtype; /*消息类型*/
char sBuffer[BUFFER+1]; /*数据成员,可有多个*/
};
int main()
{
struct msgtype msg;
key_t key;
int msgid;
if(-1 == (key=ftok(MSG_FILE,'a')) )
{
printf("ftok error\n");
exit(1);
}
msgid = msgget(key,PERM | IPC_CREATE |IPC_EXCL);/*返回一个消息队列的id*/
if(-1 == msgid)
{
printf("msgget error\n");
exit(1);
}
while(1)
{
msgrcv(msgid,&msg,sizeof(struct msgtype),1,0);/*接受消息队列。long msgtype=1,呼应位于msgid消息队列中msgtype.mtype=1的第一个消息;msgflg = 0无消息是函数的动作,一般是0。*/
printf("some one say:%s",msg.sBuffer);
msg.mtype = 2;
msgsend(msgid,&msg,sizeof(struct msgtype),0);/*msgflg = 0*/
}
return 0;
}
int main(int argc,char **argv)
{
struct msgtype msg;
key_t key;
int msgid;
key = ftok(MSG_FILE,'a');
msgid = msgget(key,PERM);
msg.mtype = 1; /*设置1*/
strcpy(msg.sBuffer,argv[1]);
msgsend(msgid,&msg,sizeof(struct msgtype),0);
memset(&msg,0,sizeof(struct msgtype));
msgrev(msgid,&msg,sizeof(struct msgtype),2,0);/*long msgtype=2*/
printf("her say :%s",msg.sBuffer);
return 0;
}
注意颜色对应关系,
还有,该队列 程序结束后并未删除,可用ipcrm删除。
- system v消息队列demo(未编译)
- 消息队列(System V)
- system v 消息队列
- System V 消息队列
- system v--消息队列
- System V消息队列
- system V消息队列
- System V消息队列
- System V 消息队列
- System V 消息队列
- 共享内存system v(未编译)
- System V消息队列(2)
- system V 消息队列(msg)
- system v 消息队列(二)
- 消息队列(system V IPC)
- System V 消息队列(一)
- System V消息队列(三)
- System V IPC_msg消息队列
- socketpair初识
- androidの设置字体样式引起应用程序运行时占用内存过大
- Windows XP和Ubuntu14.04双系统的安装
- myeclipse下载网址
- 黑马程序员-java之TreeSet,Comparable,Comparator
- system v消息队列demo(未编译)
- TT:Number overflow for TO_CHAR function -- file "numberAPI.c"
- IOS开发之__bridge,__bridge_transfer和__bridge_retained
- mysql常用操作命令
- hdu 5254
- redis添加开机启动
- 将USB的默认连接方式改为MTP
- Android Fragment 你应该知道的一切
- YT02-简单数学课后题-1005 {A} + {B} -(5.31日-烟台大学ACM预备队解题报告)