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;
    }


     

  • 相关阅读:
    request.getParameterMap 跟request.getParameter区别
    SQL语句中---删除表数据drop、truncate和delete的用法
    今日出现两个错误
    html和jsp的区别及优缺点
    怎么将 美国的日期格式改成中国的日期格式
    java web相关的面试题
    i++与++i的关系
    Oracle常见的语法,以及跟MySQL的区别
    DBA
    java基础之印象笔记
  • 原文地址:https://www.cnblogs.com/newlist/p/2261657.html
Copyright © 2011-2022 走看看