#include <sys/ipc.h>
#include <sys/msg.h>
typedef struct
{
int msg_type;
char msg_data[512];
} msgstr;
main()
{
int key = 4000;
int msgid = 0;
int msgid1 = 0;
//int msgid2 = 0;
int i=0,j=0;
msgstr send_msg,recv_msg;
//創(chuàng)建消息隊(duì)列的第一個(gè)節(jié)點(diǎn)
msgid = msgget(key,IPC_CREAT|0660);
if(msgid < 0)
printf("message 1 create fail[msgid = %d]\n",msgid);
else
printf("message 1 create success[msgid = %d]\n",msgid);
//創(chuàng)建消息隊(duì)列的第二個(gè)節(jié)點(diǎn)
msgid1 = msgget(key+100,IPC_CREAT|0660);
if(msgid1 < 0)
printf("message 2 create fail[msgid1 = %d]\n",msgid);
else
printf("message 2 create success[msgid1 = %d]\n",msgid);
//發(fā)送第一個(gè)節(jié)點(diǎn)消息
send_msg.msg_type = 100;
memset(send_msg.msg_data,0,512);
strcpy(send_msg.msg_data,"This is my first message.");
i = msgsnd(msgid,&send_msg,512,0);
if(i == 0)
printf("message 1 send success!\n");
else
printf("message 1 send failed!\n");
//發(fā)送第二個(gè)節(jié)點(diǎn)消息
send_msg.msg_type = 200;
memset(send_msg.msg_data,0,512);
strcpy(send_msg.msg_data,"This is my second message.");
i = msgsnd(msgid1,&send_msg,512,0);
if(i == 0)
printf("message 2 send success!\n");
else
printf("message 2 send failed!\n");
//發(fā)送第三個(gè)節(jié)點(diǎn)消息
send_msg.msg_type = 300;
memset(send_msg.msg_data,0,512);
strcpy(send_msg.msg_data,"This is my third message.");
i = msgsnd(0,&send_msg,512,0);
if(i == 0)
printf("message 3 send success!\n");
else
printf("message 3 send failed!\n");
//接收第一個(gè)節(jié)點(diǎn)消息
recv_msg.msg_type = 0;
memset(recv_msg.msg_data,0,sizeof(recv_msg.msg_data));
j = msgrcv(msgid,&recv_msg,512,0,IPC_NOWAIT);
if(j <= 0)
printf("message receive failed\n");
else
{
printf("message receive success[length: %d]\n",j);
printf("message type = %d\n",recv_msg.msg_type);
printf("message char data: %s\n",recv_msg.msg_data);
}
//接收第二個(gè)節(jié)點(diǎn)消息
recv_msg.msg_type = 0;
memset(recv_msg.msg_data,0,sizeof(recv_msg.msg_data));
j = msgrcv(msgid1,&recv_msg,512,0,IPC_NOWAIT);
if(j <= 0)
printf("message receive failed\n");
else
{
printf("message receive success[length: %d]\n",j);
printf("message type = %d\n",recv_msg.msg_type);
printf("message char data: %s\n",recv_msg.msg_data);
}
}
聯(lián)系客服