zoukankan      html  css  js  c++  java
  • 消息队列 进程通信

    参考地址:http://www.linuxidc.com/Linux/2011-08/39738.htm

    #include <sys/types.h>
    #include <sys/ipc.h>
    #include <sys/msg.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <string.h>
    #define BUFSZ 512
    struct message{ //消息结构体
    long msg_type;
    char msg_text[BUFSZ];
    };

    int main()
    {
    int qid;
    key_t key;
    int len;
    struct message msg;

    if((key=ftok(".",'a'))==-1) //ftok获得一个key
    {
    perror("ftok");
    exit(1);
    }
    if((qid=msgget(key,IPC_CREAT|0666))==-1){ //创建一个消息队列
    perror("msgget");
    exit(1);
    }
    printf("opened queue %d\n",qid);
    puts("Please enter the message to queue:");
    if((fgets(msg.msg_text,BUFSZ,stdin))==NULL) // 从标准输入获取输入
    {
    puts("no message");
    exit(1);
    }
    msg.msg_type = getpid();
    len = strlen(msg.msg_text);
    if((msgsnd(qid,&msg,len,0))<0){ //发送消息
    perror("message posted");
    exit(1);
    }
    if(msgrcv(qid,&msg,BUFSZ,0,0)<0){ //接收消息
    perror("msgrcv");
    exit(1);
    }
    printf("message is:%s\n",(&msg)->msg_text);
    if((msgctl(qid,IPC_RMID,NULL))<0){ //删除消息
    perror("msgctl");
    exit(1);
    }
    exit(0);
    }



  • 相关阅读:
    Java
    paratest
    ccnet
    资料
    ccnet
    判断类被某个属性应用
    有趣的数学 -- 数学归纳法 -- 互不重叠的单位正方形
    排序算法 -- 堆排序
    APUE CH10 Signals
    APUE CH9 Process Relationship
  • 原文地址:https://www.cnblogs.com/wangkangluo1/p/2287573.html
Copyright © 2011-2022 走看看