多进程间使用消息队列通信

来源:互联网 发布:php域名和ip授权 编辑:程序博客网 时间:2024/05/18 03:53

/************msg_send.c*****/

#include <sys/ipc.h>
#include <sys/msg.h>
#include <sys/types.h>
#include <errno.h>
#include <string.h>

struct message
{
 long type;
 char data[128];
};


int main(int argc,char *argv[])
{
 int msg_id;
 struct message msg_info;
 msg_info.type=10;
 strcpy(msg_info.data,"ipc sample..");
 msg_id=msgget((key_t)3333,IPC_CREAT|0666);
 if(msg_id==-1)
 {
  perror("msgget:");
  return -1;
 }
 if(msgsnd(msg_id,&msg_info,128,0)==-1)
  perror("msgsnd:");
 msg_info.type=20; 
 strcpy(msg_info.data,"ffffffffffff");

 msgsnd(msg_id,&msg_info,128,0);
 return 0;
}

 

/*********msg_recv.c*****************/

 

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

struct message
{
        long type;
        char data[128];
};

int main(int argc,char *argv[])
{
  int msg_id;
        struct message msg_info;
   msg_id=msgget((key_t)3333,IPC_CREAT|0666);
 if(msgrcv(msg_id,&msg_info,128,0,0)==-1)
  perror("msgrcv:");
 else
 {
  printf("message info %s\n",msg_info.data);
 }
 
 msgrcv(msg_id,&msg_info,128,0,0);
 printf("message info %s\n",msg_info.data);
 msgctl(msg_id,IPC_RMID,0);
 return 0;

}

 

原创粉丝点击