zoukankan      html  css  js  c++  java
  • 消息队列

    消息队列


          A 和 B 是 相对独立的两支程序,现在 A  传送  10 个Student 到  B

          B 将Student 读取出来,显示在界面上

       
          然后 B  传送  10 个 Teacher 到  A  ,A 显示 teacher 在界面上

    #include "public.h"

    typedef struct students
    {
     long mtype;
     int no;
     char username[100];
    }*StusNode,SNode;


    int main()
    {
     int ret=-1;
     int msg_flags,msg_id;
     key_t key;

     struct msqid_ds msg_info;
     SNode msg_mbuf[10],msg_mbufs[10];
     
     
     for (int t=0;t<10;t++)
     {
      msg_mbuf[t].mtype=10;
      msg_mbuf[t].no=t;
      strcpy(msg_mbuf[t].username,"students");
     }


     int msg_sflags,msg_rflags;
     char *msgpath="/ipc/msg/";
     key=ftok(msgpath,'b');
     if (key!=-1)
     {
      printf("成功创建KEY\n");
     }
     else
     {
      printf("建立KEY失败\n");
     }
     msg_flags=IPC_CREAT|IPC_EXCL;
     msg_id=msgget(key,msg_flags|0x0666);
     if (-1==msg_id)
     {
      printf("消息建立失败\n");
      return 0;
     }
     msg_sflags=IPC_NOWAIT;
     //msg_mbuf.mtypes=10;
     for (int t=0;t<10;t++)
     {
      int len = sizeof(SNode)-sizeof(long);
      ret=msgsnd(msg_id,&msg_mbuf[t],len,msg_sflags);
      
      if (-1==ret)
      {
       printf("发送消息失败\n");
      }
      else
       printf("发送成功\n");
     }
     msg_rflags=IPC_NOWAIT|MSG_NOERROR;
     for (int t=0;t<10;t++)
     {
      int len = sizeof(SNode)-sizeof(long);
      ret=msgrcv(msg_id,&msg_mbufs[t],len,10,msg_rflags);
      printf("no = %d username = %s\n",msg_mbufs[t].no,msg_mbufs[t].username);
      if (-1==ret)
      {
       printf("接受消息失败\n");
      }
      else
      {
       printf("接受消息成功,长度:%d\n",ret);
      }
     }

     ret=msgctl(msg_id,IPC_RMID,NULL);
     if (-1==ret)
     {
      printf("删除消息失败\n");
       
     }
     else
      printf("删除消息成功\n");


     return 0;
    }


     

  • 相关阅读:
    对初学者的几点建议
    关于.net的一些资源网站
    iis 经常出现的问题以及解决方案
    C#编程规范(2008年4月新版)
    优秀ASP.NET程序员的修炼之路
    网站软件开发规范(某门户网站的)
    asp.net跳转页面的三种方法比较
    H5开发相关资料
    C#简介
    用C#获取硬盘序列号,CPU序列号,网卡MAC地址
  • 原文地址:https://www.cnblogs.com/newlist/p/2261657.html
Copyright © 2011-2022 走看看