#include <sys/types.h>
#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; //创建消息队列的第一个节点 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); //创建消息队列的第二个节点 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); //发送第一个节点消息 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"); //发送第二个节点消息 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"); //发送第三个节点消息 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"); //接收第一个节点消息 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); } //接收第二个节点消息 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); } } |
|
来自: angelbrian > 《囧~Linux》