消息队列实现进程间通信

服务器

 
  
  1. #include"sys/types.h"
  2. #include"sys/msg.h"
  3. #include"sys/ipc.h"
  4. #defineMSGKEY75
  5. structmsgform{
  6. longmtype;
  7. charmtext[1000];
  8. }msg;
  9. voidserver()
  10. {
  11. intmsgid;
  12. msgid=msgget(MSGKEY,IPC_CREAT|00666);/*创建一个消息队列*/
  13. if(msgid==-1)
  14. {
  15. printf("error!\n");
  16. return;
  17. }
  18. do
  19. {
  20. if(msgrcv(msgid,(void*)&msg,1000,0,0)==-1)
  21. {
  22. printf("receiveerror!\n");
  23. exit(0);
  24. }
  25. printf("receviedmessagesucceed!\n");
  26. }while(msg.mtype!=1);
  27. if(msgctl(msgid,IPC_RMID,0)==-1)
  28. {
  29. printf("msgctlfailed!\n");
  30. exit(0);
  31. }
  32. exit(1);
  33. }
  34. main()
  35. {
  36. server();
  37. }

客户端

 
  
  1. #include"sys/types.h"
  2. #include"sys/msg.h"
  3. #include"sys/ipc.h"
  4. #defineMSGKEY75
  5. structmsgform
  6. {
  7. longmtype;
  8. charmtext[1000];
  9. }msg;
  10. voidclient()
  11. {
  12. intmsgid,i;
  13. msgid=msgget(MSGKEY,IPC_CREAT|00666);
  14. if(msgid==-1)
  15. {
  16. printf("openerror!\n");
  17. return;
  18. }
  19. for(i=10;i>=1;i--)
  20. {
  21. msg.mtype=i;
  22. printf("clientsentmessage!\n");
  23. if(msgsnd(msgid,(void*)&msg,1000,0)==-1)
  24. {
  25. printf("senderror!\n");
  26. exit(0);
  27. }
  28. printf("sendmessagesucceed!\n");
  29. }
  30. exit(1);
  31. }
  32. main()
  33. {
  34. client();
  35. }

本文出自 “阿凡达” 博客,请务必保留此出处http://shamrock.blog.51cto.com/2079212/718898

你可能感兴趣的:(消息队列实现进程间通信)