当前位置: 首页 > news >正文

创建消息队列,完成信息传输

#include <myhead.h>
struct msgbuf
{long mtype;  //消息类型char mtext[1024];  //消息正文
};//宏定义一个消息正文大小
#define SIZE  (sizeof(struct msgbuf)-sizeof(long))int main(int argc, const char *argv[])
{//创建一个进程pid_t pid=fork();if(pid==-1){perror("fork error");return -1;}if(pid>0)//父进程{//1.创建一个key值key_t key =ftok("/",'A');if(key==-1){perror("fork perror");return -1;}//创建一个消息队列int msqid =msgget(key,IPC_CREAT|0664);if(msqid ==-1){perror("magget perror");return -1;}//不断的向消息队列中写入消息struct msgbuf buf;while(1){printf("信息类型:");scanf("%ld",&buf.mtype);getchar();printf("信息正文:");fgets(buf.mtext,SIZE,stdin);buf.mtext[strlen(buf.mtext)-1]=0;if(strcmp(buf.mtext,"quit")==0){break;}msgsnd(msqid,&buf,SIZE,0);}}else if(pid==0)//子进程{//1.创建一个key值key_t key =ftok("/",'h');if(key==-1){perror("fork perror");return -1;                                                                                                                                   }//创建一个消息队列int msqid =msgget(key,IPC_CREAT|0664);if(msqid ==-1){perror("magget perror");return -1;}struct msgbuf buf;while(1){msgrcv(msqid,&buf,SIZE,1,0);printf("取出为:%s\n",buf.mtext);}}return 0;
}
#include <myhead.h>
struct msgbuf
{long mtype;  //消息类型char mtext[1024];  //消息正文
};//宏定义一个消息正文大小
#define SIZE  (sizeof(struct msgbuf)-sizeof(long))int main(int argc, const char *argv[])
{//创建一个进程pid_t pid=fork();if(pid==-1){perror("fork error");return -1;}if(pid==0)//子进程{//1.创建一个key值key_t key =ftok("/",'h');if(key==-1){perror("fork perror");return -1;}//创建一个消息队列int msqid =msgget(key,IPC_CREAT|0664);if(msqid ==-1){perror("magget perror");return -1;}//不断的向消息队列中写入消息struct msgbuf buf;while(1){printf("信息类型:");scanf("%ld",&buf.mtype);getchar();printf("信息正文:");fgets(buf.mtext,SIZE,stdin);buf.mtext[strlen(buf.mtext)-1]=0;if(strcmp(buf.mtext,"quit")==0){break;}msgsnd(msqid,&buf,SIZE,0);}}else if(pid>0)//父进程{//1.创建一个key值key_t key =ftok("/",'A');if(key==-1){perror("fork perror");return -1;}//创建一个消息队列int msqid =msgget(key,IPC_CREAT|0664);if(msqid ==-1){perror("magget perror");return -1;}struct msgbuf buf;while(1){msgrcv(msqid,&buf,SIZE,2,0);printf("取出为:%s\n",buf.mtext);}}return 0;
}                                                                                                                                                         


文章转载自:

http://WrmOfTpJ.ddqdL.cn
http://hsOWCaLC.ddqdL.cn
http://UTNRRIpF.ddqdL.cn
http://Hh2s4ia6.ddqdL.cn
http://C1E8cv1Y.ddqdL.cn
http://FqyrLSmw.ddqdL.cn
http://zARG9mHV.ddqdL.cn
http://gUsX4Nlt.ddqdL.cn
http://GHemk7ac.ddqdL.cn
http://8HKDIpUm.ddqdL.cn
http://depEmqDi.ddqdL.cn
http://rSN2A7Ca.ddqdL.cn
http://HfNHLgJR.ddqdL.cn
http://adAPsdfg.ddqdL.cn
http://VLTqr9ML.ddqdL.cn
http://crmnsp4o.ddqdL.cn
http://I5gpjtxa.ddqdL.cn
http://oYSwYzeq.ddqdL.cn
http://JvP3n4Ts.ddqdL.cn
http://9XSzGAoT.ddqdL.cn
http://1Xn20ynt.ddqdL.cn
http://px976HmI.ddqdL.cn
http://FTBKeHBL.ddqdL.cn
http://rPOPxIFu.ddqdL.cn
http://4vGJj7oi.ddqdL.cn
http://GlGRKaS7.ddqdL.cn
http://UEmXVqQu.ddqdL.cn
http://gGxvu6fe.ddqdL.cn
http://8UCTdlTa.ddqdL.cn
http://3udPUDJY.ddqdL.cn
http://www.dtcms.com/a/365453.html

相关文章:

  • 输电线路杆塔倾斜在线监测装置:技术解析与实际应用
  • 浏览器面试题及详细答案 88道(67-77)
  • 项目中 Spring Boot 配置文件未生效该如何解决
  • 网络世界漫游指南:MAC地址、MAC层与LLC层的奇幻之旅
  • 从儒略日到航天轨道:时间与坐标系的探索之旅
  • torch学习 自用
  • Ubuntu22.04下编译googletest源代码生成.so动态库
  • 现在你问「怎么剪枝」,其实就是在 循环里面提前判断,如果后面剩下的数字不够了,就不用再递归下去了。
  • 神经网络模型介绍
  • STM32的时钟系统与时钟树的配置
  • pip的缓存
  • 嵌入式人别再瞎折腾了!这8个开源项目,解决按键/队列/物联网所有痛点,小白也能抄作业
  • 【Rhino】【Python】将开放曲面转换为边界线和填充
  • Kotlin编程学习记录2
  • H3C UIS Cell 3020 G3服务器更换raid卡安装ONEStor记录
  • Python - Union联合类型注解
  • 数据库函数详解:COALESCE 到底有什么用?
  • 微硕WINSOK超低阻抗MOS管 WSD30100DN56在汽车高性能系统中的应用
  • Ubuntu22.04中使用cmake安装abseil-cpp库
  • oracle 从一张表更新到另外一张表的方法(MERGE)
  • java面试:可以讲解一下mysql的索引吗
  • 部署MYSQL主从同步超详细过程
  • Kafka面试精讲 Day 6:Kafka日志存储结构与索引机制
  • 【stm32】定时器中断与定时器外部时钟
  • RTSP流端口占用详解:TCP模式与UDP模式的对比
  • 首届中国AI项目管理大会成功召开圆满闭幕!
  • 【BigWorld 游戏服务器引擎】数据落地方案自动化详解,及Java实现方案的探索
  • 关于ES中文分词器analysis-ik快速安装
  • 理解用户需求
  • word删除指定页面