Advertisement
Guest User

Untitled

a guest
Nov 14th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.52 KB | None | 0 0
  1.  
  2. zad4
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <sys/types.h>
  6. #include <sys/ipc.h>
  7. #include <sys/sem.h>
  8.  
  9. #define PERMS 0666
  10.  
  11. main()
  12. {
  13. int semid = -1;
  14. if ((semid = semget(ftok("/tmp",0), 1, IPC_CREAT | PERMS)) < 0)
  15. perror("blad tworzenia semafora");
  16.  
  17. else semctl(semid,0,IPC_RMID,0);
  18. perror("usuwanie");
  19. return 0;
  20. }
  21.  
  22. ----------------------------------------------------------------------------------------------------------------
  23.  
  24.  
  25. zad1
  26. #include <sys/types.h>
  27. #include <sys/ipc.h>
  28. #include <stdio.h>
  29. #include <stdlib.h>
  30.  
  31. int main()
  32. {
  33. key_t klucz;
  34. klucz = ftok("/etc/hosts",4); //plik musi być bo jak nie to ftok zwróci -1
  35. printf("ftok 0x%X\n",klucz);
  36. }
  37.  
  38. ----------------------------------------------------------------------------------------------------
  39. #include <stdio.h>
  40. #include <stdlib.h>
  41. #include <sys/types.h>
  42. #include <sys/ipc.h>
  43. #include <sys/sem.h>
  44.  
  45. #define PERMS 0666
  46.  
  47. static struct sembuf op_lock[2] = {
  48. 0,0,0, /* czekaj, aż semafor nr 0 stanie się zerem */
  49. 0,1,0 /* następnie zwiększ ten semafor 1*/
  50. };
  51.  
  52. static struct sembuf op_unlock[1] = {
  53. 0, -1, IPC_NOWAIT /* zmniejsz semafor nr 0 o 1 bez czekania bo to zwolnienie zasobów */
  54. };
  55. void blokuj(int semid)
  56. {
  57. if (semop(semid, &op_lock[0], 1)<0)
  58. perror("blad lokowania semafora");
  59. }
  60.  
  61. void odblokuj(int semid)
  62. {
  63. if (semop(semid, &op_unlock[0], 1) < 0)
  64. perror("blad odlokowania semafora");
  65. }
  66.  
  67.  
  68. main()
  69. {
  70. int semid = -1; // identyfikator semafora
  71. int co;
  72. int jeszcze;
  73. if ((semid = semget(ftok("/tmp",0), 1, IPC_CREAT | PERMS)) < 0)
  74. perror("blad tworzenia semafora");
  75. printf("Podaj Polecenie\n 1 - podnies semafor\n 2 - opusc semafor\n 0 - wyjscie\n");
  76. for (jeszcze = 1;jeszcze;)
  77. {
  78. scanf("%d",&co);
  79. printf("wybrano %d\n",co);
  80. switch(co)
  81. {
  82. case 2:
  83. {
  84. printf("przed blokuj\n");
  85. blokuj(semid);
  86. printf("po blokuj\n");
  87. break;
  88. }
  89. case 1:
  90. {
  91. printf("przed odblokuj\n");
  92. odblokuj(semid);
  93. printf("po odblokuj\n");
  94. break;
  95. }
  96. case 0:
  97. {
  98. jeszcze = 0;
  99. break;
  100. }
  101. default:
  102. {
  103. printf("nie rozpoznana komenda %d\n",co);
  104. }
  105. }
  106. }
  107. }
  108. -
  109.  
  110. -----------------------------------------------------------------------------------------------------------------------
  111. zad2#include <stdio.h>
  112. #include <stdlib.h>
  113. #include <sys/types.h>
  114. #include <sys/ipc.h>
  115. #include <sys/sem.h>
  116.  
  117. #define PERMS 0666
  118.  
  119. static struct sembuf op_lock[1] = {
  120. 0, -1, 0
  121. };
  122.  
  123. static struct sembuf op_unlock[1] = {
  124. 0, 1, 0
  125. };
  126.  
  127. void blokuj(int semid)
  128. {
  129. if (semop(semid, &op_lock[0], 1)<0)
  130. perror("blad lokowania semafora");
  131. }
  132.  
  133. void odblokuj(int semid)
  134. {
  135. if (semop(semid, &op_unlock[0], 1) < 0)
  136. perror("blad odlokowania semafora");
  137. }
  138.  
  139.  
  140. main()
  141. {
  142. int semid = -1; // identyfikator semafora
  143. int co;
  144. int jeszcze;
  145. if ((semid = semget(ftok("/tmp",0), 1, IPC_CREAT | PERMS)) < 0)
  146. perror("blad tworzenia semafora");
  147. printf("Podaj Polecenie\n 1 - podnies semafor\n 2 - opusc semafor\n 0 - wyjscie\n");
  148. for (jeszcze = 1;jeszcze;)
  149. {
  150. scanf("%d",&co);
  151. printf("wybrano %d\n",co);
  152. switch(co)
  153. {
  154. case 2:
  155. {
  156. printf("przed blokuj\n");
  157. blokuj(semid);
  158. printf("po blokuj\n");
  159. break;
  160. }
  161. case 1:
  162. {
  163. printf("przed odblokuj\n");
  164. odblokuj(semid);
  165. printf("po odblokuj\n");
  166. break;
  167. }
  168. case 0:
  169. {
  170. jeszcze = 0;
  171. break;
  172. }
  173. default:
  174. {
  175. printf("nie rozpoznana komenda %d\n",co);
  176. }
  177. }
  178. }
  179. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement