Tobiahao

S01_PAMIEC_DZIELONA_05

Dec 19th, 2017
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.92 KB | None | 0 0
  1. /*
  2. Zademonstruj działanie flagi SHM_RDONLY.
  3. */
  4.  
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. #include <sys/ipc.h>
  8. #include <sys/types.h>
  9. #include <sys/shm.h>
  10. #include <string.h>
  11.  
  12. #define MESSAGE "Jakas wiadomosc"
  13.  
  14. int main(void)
  15. {
  16.     int shmid;
  17.     char *shared_memory;
  18.  
  19.     if((shmid = shmget(IPC_PRIVATE, SHMLBA, 0775 | IPC_CREAT | IPC_EXCL)) == -1){
  20.         perror("shmget");
  21.         return EXIT_FAILURE;
  22.     }
  23.  
  24.     if((shared_memory = (char *)shmat(shmid, NULL, SHM_RDONLY)) == (void *)-1){
  25.         perror("shmat");
  26.         return EXIT_FAILURE;
  27.     }
  28.  
  29.     printf("Proba zapisania danych do pamieci dzielonej z flaga SHM_RDONLY\n");
  30.     strncpy(shared_memory, MESSAGE, strlen(MESSAGE));
  31.  
  32.     printf("W pamieci dzielonej znajduje sie: %s\n", shared_memory);
  33.  
  34.     if(shmdt(shared_memory) == -1){
  35.         perror("shmdt");
  36.         return EXIT_FAILURE;
  37.     }
  38.  
  39.     if(shmctl(shmid, IPC_RMID, NULL) == -1){
  40.         perror("shmctl");
  41.         return EXIT_FAILURE;
  42.     }
  43.  
  44.     return EXIT_SUCCESS;
  45. }
Add Comment
Please, Sign In to add comment