Tobiahao

S01_PAMIEC_DZIELONA_07

Dec 19th, 2017
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.07 KB | None | 0 0
  1. /*
  2. Użyj flagi IPC_STAT dla funkcji shmctl() celem uzyskania informacji na temat u ż y -
  3. wanego przez proces obszaru pami ę ci dzielonej.
  4. */
  5.  
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <sys/ipc.h>
  9. #include <sys/types.h>
  10. #include <sys/shm.h>
  11. #include <string.h>
  12.  
  13. #define MESSAGE "Jakas wiadomosc"
  14.  
  15. int main(void)
  16. {
  17.     int shmid;
  18.     struct shmid_ds info;
  19.     char *shared_memory;
  20.  
  21.     if((shmid = shmget(IPC_PRIVATE, SHMLBA, 0775 | IPC_CREAT | IPC_EXCL)) == -1){
  22.         perror("shmget");
  23.         return EXIT_FAILURE;
  24.     }
  25.  
  26.     if((shared_memory = (char *)shmat(shmid, NULL, 0)) == (void *)-1){
  27.         perror("shamt");
  28.         return EXIT_FAILURE;
  29.     }
  30.  
  31.     strncpy(shared_memory, MESSAGE, strlen(MESSAGE));
  32.  
  33.     if(shmdt(shared_memory) == -1){
  34.         perror("shmdt");
  35.         return EXIT_FAILURE;
  36.     }
  37.  
  38.     if(shmctl(shmid, IPC_STAT, &info) == -1){
  39.         perror("shmctl_stat");
  40.         return EXIT_FAILURE;
  41.     }
  42.  
  43.     printf("PID tworcy: %d\nObszar zajmuje: %zd\n",
  44.             info.shm_cpid, info.shm_segsz);
  45.  
  46.     if(shmctl(shmid, IPC_RMID, NULL) == -1){
  47.         perror("shmctl_rmid");
  48.         return EXIT_FAILURE;
  49.     }
  50.  
  51.     return EXIT_SUCCESS;
  52. }
Add Comment
Please, Sign In to add comment