Advertisement
Guest User

Untitled

a guest
Jun 27th, 2017
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.58 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <sys/types.h>
  5. #include <sys/ipc.h>
  6. #include <sys/msg.h>
  7.  
  8. #define BUFFSIZE 256
  9.  
  10. typedef struct{
  11. long type;
  12. char data[BUFFSIZE];
  13. } message_t;
  14.  
  15. int MQ;
  16.  
  17. void grandkiddyscode(){
  18. message_t sendMessage;
  19. sendMessage.type = 100L;
  20. strcpy(sendMessage.data, "LOS GEHTS!");
  21. msgsnd(MQ, &sendMessage, BUFFSIZE, 0);
  22.  
  23. strcpy(sendMessage.data, "LOS GEHTS ZUM ZWEITEN!");
  24. msgsnd(MQ, &sendMessage, BUFFSIZE, 0);
  25.  
  26.  
  27. strcpy(sendMessage.data, "Das wars");
  28. msgsnd(MQ, &sendMessage, BUFFSIZE, 0);
  29. }
  30.  
  31.  
  32. void kiddyscode(){
  33. pid_t i = fork();
  34. switch(i){
  35. case -1:
  36. printf("ERROR: fork()\n");
  37. exit(1);
  38. case 0:
  39. grandkiddyscode();
  40. exit(0);
  41. break;
  42. default:
  43. break;
  44. }
  45.  
  46. message_t receiveMessage;
  47. do {
  48. msgrcv(MQ, &receiveMessage, BUFFSIZE, 100L, 0);
  49. printf("kiddyscode hat empfangen: %s\n", receiveMessage.data);
  50. } while(strncmp(receiveMessage.data, "Das wars", 8));
  51. }
  52.  
  53.  
  54. int main()
  55. {
  56. MQ = msgget(IPC_PRIVATE, 0660);
  57.  
  58. int i = fork();
  59. switch(i){
  60. case -1:
  61. printf("ERROR: fork()");
  62. exit(1);
  63. case 0:
  64. kiddyscode();
  65. exit(0);
  66. break;
  67. default:
  68. wait(0);
  69. break;
  70. }
  71.  
  72. int success = msgctl(MQ, IPC_RMID, 0);
  73.  
  74. if(success == -1){
  75. printf("ERROR: msgctl() - Could not remove message queue!");
  76. }
  77.  
  78. return 0;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement