Tobiahao

S01_LAB03_03a

Nov 14th, 2017
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.04 KB | None | 0 0
  1. /*
  2. Napisz dwa programy (procesy niespokerwnione), które b ę d ą
  3. komunikowa ć si ę przy pomocy kolejki komunikatów. Do wygenerowania
  4. klucza u ż yj funkcji ftok().
  5. */
  6.  
  7. // Program pierwszy - wysylajacy wiadomosc
  8.  
  9. #include <stdio.h>
  10. #include <stdlib.h>
  11. #include <sys/types.h>
  12. #include <sys/ipc.h>
  13. #include <sys/msg.h>
  14. #include <string.h>
  15.  
  16. #define MESSAGE_TO_SEND "Wiadomosc do wyslania"
  17. #define FTOK_KEY 712
  18. #define BUFFER_SIZE 128
  19.  
  20. struct msgbuf {
  21.     long mtype;
  22.     char mtext[BUFFER_SIZE];
  23. };
  24.  
  25. int main(void)
  26. {
  27.     int id;
  28.     key_t key;
  29.     struct msgbuf send_buffer;
  30.  
  31.     if((key = ftok("/tmp", FTOK_KEY)) == -1){
  32.         perror("ftok");
  33.         return EXIT_FAILURE;
  34.     }
  35.  
  36.     if((id = msgget(key, 0600 | IPC_CREAT)) == -1){
  37.         perror("msgget");
  38.         return EXIT_FAILURE;
  39.     }
  40.  
  41.     send_buffer.mtype = 1;
  42.     memset(send_buffer.mtext, '\0', BUFFER_SIZE);
  43.     strncpy(send_buffer.mtext, MESSAGE_TO_SEND, BUFFER_SIZE);
  44.  
  45.     if(msgsnd(id, &send_buffer, sizeof(send_buffer.mtext), 0) == -1){
  46.         perror("msgsnd");
  47.         return EXIT_FAILURE;
  48.     }
  49.  
  50.     return EXIT_SUCCESS;
  51. }
Add Comment
Please, Sign In to add comment