Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.14 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<unistd.h>
  3. #include<sys/ipc.h>
  4. #include<sys/msg.h>
  5. #include<sys/types.h>
  6. #include<stdlib.h>
  7. #include<sys/wait.h>
  8. #include<string.h>
  9.  
  10. struct msgbuf {
  11. long mtype;
  12. char mtext[20];
  13. };
  14.  
  15.  
  16.  
  17. void potomek(int id_kolejki, struct msgbuf bufor1){
  18. int rozmiar = sizeof(bufor1.mtext);
  19. printf("Id kolejki %d\n", id_kolejki);
  20. bufor1.mtype=1;
  21. strncpy(bufor1.mtext, "Dziala",19);
  22. int wysylanie = msgsnd(id_kolejki, &bufor1, rozmiar, 0);
  23. if(wysylanie == -1){
  24. perror("Blad wysylania");}
  25. exit(0);
  26.  
  27. }
  28.  
  29. void rodzic(int id_kolejki,struct msgbuf bufor1, struct msgbuf bufor2){
  30. int rozmiar = sizeof(bufor1.mtext);
  31. if(msgrcv(id_kolejki, &bufor2, rozmiar, 1, 0)==-1)
  32. perror("Blad odbioru");
  33. printf("Odebrany komunikat: %s\n", bufor2.mtext);
  34. if(msgctl(id_kolejki, IPC_RMID, 0)==-1)
  35. perror("Blad zamykania kolejki");
  36. if(wait(0)<0)
  37. perror("wait");
  38. }
  39.  
  40.  
  41. int main(void)
  42. {
  43. int id_kolejki;
  44. struct msgbuf bufor1, bufor2;
  45. id_kolejki = msgget(IPC_PRIVATE, 0600);
  46. int pid = fork();
  47. if(pid == 0)
  48. {
  49. potomek(id_kolejki, bufor1);
  50. }
  51. else {
  52.  
  53. rodzic(id_kolejki, bufor1, bufor2);
  54. }
  55. return 0;
  56.  
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement