消息队列
来源:互联网 发布:linux进程数据结构 编辑:程序博客网 时间:2024/06/05 20:40
#include <sys/types.h>#include <sys/msg.h>#include <unistd.h>#include <stdio.h>#include <stdlib.h>#include <sys/ipc.h>#include <string.h>#include <signal.h>struct msg_buf { int mtype; char data[255]; };int main(){ key_t key; pid_t pid; int msgid; int ret; struct msg_buf msgbuf; struct msg_buf msgbuf1; struct msg_buf msgbuf2; struct msg_buf msgbuf3; int i = 0; key=ftok(".",'a'); printf("key =[%x]\n",key); msgid=msgget(key,IPC_CREAT|0666); /*通过文件对应*/ if(msgid==-1) { printf("create error\n"); return -1; } if((pid = fork()) < 0) { perror("fork error"); exit(0); } if( pid > 0) { msgbuf1.mtype = 1; strcpy(msgbuf1.data,"test haha1"); msgbuf2.mtype = 2; strcpy(msgbuf2.data,"test haha2"); msgbuf3.mtype = 3; strcpy(msgbuf3.data,"test haha3"); ret=msgsnd(msgid,&msgbuf1,sizeof(msgbuf1.data),IPC_NOWAIT); if(ret==-1) { printf("send message err\n"); return -1; } //sleep(3); ret=msgsnd(msgid,&msgbuf2,sizeof(msgbuf2.data),IPC_NOWAIT); if(ret==-1) { printf("send message err\n"); return -1; } // sleep(3); ret=msgsnd(msgid,&msgbuf3,sizeof(msgbuf3.data),IPC_NOWAIT); if(ret==-1) { printf("send message err\n"); return -1; } // sleep(3); // kill(pid,SIGSTOP); waitpid(pid,NULL,0); exit(0); } if( pid == 0) { while(i < 3) { i++; memset(&msgbuf,0,sizeof(msgbuf)); ret=msgrcv(msgid,&msgbuf,sizeof(msgbuf.data),i,0); if(ret==-1) { printf("recv message err\n"); return -1; } printf("recv msg =[%s]\n",msgbuf.data); sleep(1); } exit(0); } return 0;}
0 0
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- 消息队列
- <>消息队列
- 消息队列
- localhost 127.0.0.1和本机ip三者的区别
- Spring项目打包部署( Maven Assembly插件)
- 剑指offer——面试题20:顺时针打印矩阵
- 2016年11月29日学习总结----LinuxC实现密码输入
- ubuntu12.04+mysql新环境搭建完成之后,开发代码时发现mysql.h文件找不到
- 消息队列
- SpringAOP切点配置(注解与xml配置)
- eclipse之设置快捷提示无作用的解决办法
- Sublime text 3最新版破解方法
- HTML
- C语言五子棋
- NNU_20161103_3PAT1022. D进制的A+B
- Python学习笔记(进阶)
- Think In Java第六章 访问权限修饰符