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

    消息队列:就是一个消息的链表。而一条消息则可看作一个记录,具有特定的格式。进程可以向中按照一定的规则添加新消息;另一些进程则可以从消息队列中读走消息 

    发送消息队列:

    #include<sys/types.h>
    #include<sys/msg.h>
    #include<sys/ipc.h>
    #include<stdio.h>

    struct msgt
    {
    long msgtype;
    char msgtext[1024];

    };
    int msg_type;
    char str[256];
    struct msgt msgs;
    void main()
    {
    int msqid;


    //创建消息类型
    msqid= msgget(1024, IPC_CREAT);

    while(1)
    {
    printf("please input message type,0 for quit!");
    //获取消息类型
    scanf("%d",&msg_type);


    //如果发送消息类型为0,退出循环
    if(msg_type==0)
    break;

    //获取消息
    printf("please input message content ");
    scanf("%s",&str);

    msgs.msgtype=msg_type;
    strcpy(msg.msgtext,str);


    //发送消息

    msgsnd( msqid, &msgs,sizeof(struct msgt), 0);

    }


    //删除消息队列

    msgctl( msqid, IPC_RMID, 0)


    }

    接收消息队列:

    #include<sys/types.h>
    #include<sys/msg.h>
    #include<sys/ipc.h>
    #include<stdio.h>

    int msqid=0;
    struct msgt
    {
    long msgtype;
    char msgtext[1024];

    };

    void childprocess()
    {
    struct msgt msgs;

    while(1)

    {
    //接收消息队列
    msgrcv( msqid, &msgs,sizeof(struct msgt),0,0);

    //打印消息队列中的数据
    printf("msg text: %s ",msgs.msgtext);

    }
    return;
    }


    void main()
    {

    int i;
    //打开消息队列
    msqid= msgget(1024, IPC_CREAT);


    //创建3个子进程,处理速度加快3个进程同时处理
    for(i=o;i<3;i++)
    {
    cpid=fork();
    if(cpid<0)
    printf("creat child process error ");
    else if(cpid==0)
    childprocess();
    }
    }

     

  • 相关阅读:
    Genealogical tree(拓扑结构+邻接表+优先队列)
    确定比赛名次(map+邻接表 邻接表 拓扑结构 队列+邻接表)
    Agri-Net
    Network()
    Conscription
    Matrix(类似kruskal)
    Highways(求最小生成树的最大边)
    Shell学习之Shell特性(一)
    Linux学习之用户管理命令与用户组管理命令(十五)
    Linux学习之用户配置文件详解(十四)
  • 原文地址:https://www.cnblogs.com/1932238825qq/p/7367982.html
Copyright © 2011-2022 走看看