消息队列实现接收发送的例子

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 }

 

你可能感兴趣的:(消息队列)