当前位置: 首页 > 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://www.xdnf.cn/news/1445941.html

相关文章:

  • MySQL索引分类
  • 英语四级学习指南
  • A*(Astar)算法详解与应用
  • 电池分选机的自动化解决方案|深圳比斯特
  • SQLAlchemy ORM 入门教程
  • 马斯克砸钱造AI,却败给最low的“让离职员工轻松拷走代码”
  • MyHeyGen-开源版HeyGen,视频翻译工具
  • 平衡车 - 电机调速
  • HI3516CV610-00S 海思HI3516CV610安防高清视频编解码方案提供开发板
  • Nature Machine Intelligence 基于强化学习的磁性微型机器人自主三维位置控制
  • 物联网能源管控平台建设方案
  • 概率质量/密度函数、累计分布函数详解
  • github存储代码(上传更新删除)--实操版
  • 需求调研与分析
  • 最佳红米手机数据擦除软件
  • 场景题:如果一个大型项目,某一个时间所有的CPU的已经被占用了,导致服务不可用,我们开发人员应该如何使服务器尽快恢复正常
  • 2025年家装设计软件推荐:告别选择困难,轻松打造梦想之家
  • C++的内存和数组的申请释放
  • 对数似然比(LLR)
  • C/C++ 中的inline(内联函数关键字)详解
  • 功能持续优化,应用商店新增CRM分类,1Panel v2.0.10版本正式发布
  • VMware Workstation 磁盘空间不足扩容
  • 【论文阅读】InnerGS: Internal Scenes Rendering via Factorized 3D Gaussian Splatting
  • Linux_网络基础
  • C++学习 part1
  • keepalived高可用
  • 基于单片机PWM信号发生器系统Proteus仿真(含全部资料)
  • 2025年最新 unityHub游戏引擎开发2d手机游戏和桌面游戏教程
  • 使用飞算JavaAI快速搭建酒店管理系统
  • 部署MYSQL主从同步超详细过程