消息隊列實現接收發送的例子


msg消息隊列,實線不同進程之間的通信,主要依靠key來識別:

發送端

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <string.h>
 4 #include <sys/types.h>
 5 #include <sys/msg.h>
 6 #include <unistd.h>
 7 #include <time.h>
 8 #include <sys/ipc.h>
 9 struct msgmbuf{
10     int mtype;
11     char mtext[40];
12 };
13 
14 int main()
15 {
16     int ret = -1;
17     int msg_flags,msg_id;
18     key_t key;
19     struct msqid_ds msg_info;
20     struct msgmbuf msg_mbuf;
21     key = 1024;
22     msg_flags = IPC_CREAT;
23 
24     while(1)
25     {
26         msg_id = msgget(key,msg_flags|0666);
27         if(-1==msg_id)
28         {
29             printf("create message failed!\n");
30             return 0;
31         }
32         printf("Input message to send:");
33         scanf("%s",msg_mbuf.mtext);
34         getchar();
35         msg_mbuf.mtype = 10;
36         ret = msgsnd(msg_id,&msg_mbuf,sizeof(struct msgmbuf),0);
37         if(-1==ret)
38         {
39             printf("send message failed!\n");
40         }
41     
42     }
43     return 0;
44 }

接收端:

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <string.h>
 4 #include <sys/types.h>
 5 #include <sys/msg.h>
 6 #include <unistd.h>
 7 #include <time.h>
 8 #include <sys/ipc.h>
 9 struct msgmbuf{
10         int mtype;
11         char mtext[40];
12     };
13 
14 int main()
15 {
16     int ret = -1;
17     int msg_flags,msg_id;
18     key_t key;
19     struct msgmbuf msg_mbuf;
20     key =1024;
21     msg_flags = IPC_CREAT;
22     while(1)
23     {
24         msg_id = msgget(key,msg_flags|0666);
25         if(-1==msg_id)
26         {
27             printf("create message failed!\n");
28             return 0;
29         }
30     
31         ret = msgrcv(msg_id,&msg_mbuf,sizeof(struct msgmbuf),0,0);
32         if(-1==ret)
33         {
34             printf("receive message failed!\n");
35         }
36         else
37         {
38             printf("receive message successful!message[%s]\n",msg_mbuf.mtext);
39         }
40 
41     }
42     return 0;
43 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM