Advertisement
Guest User

Untitled

a guest
Jan 27th, 2020
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.52 KB | None | 0 0
  1. //zad 1
  2.  
  3. vim zad1.c
  4.  
  5. gcc -o zad1 zad1.c
  6.  
  7. ./zad1
  8.  
  9. #include <sys/types.h>
  10. #include <sys/stat.h>
  11. #include <fcntl.h>
  12. #include <stdlib.h>
  13. #include <stdio.h>
  14. #include <unistd.h>
  15.  
  16. int main()
  17. {
  18. int desk = open("emg", 0666);
  19. if(desk == -1) perror("open");
  20. int fd = creat("z", S_IRWXU);
  21. if(fd == -1) perror("create");
  22. int tekst[41];
  23. int a = read(desk, (void *)tekst, 40 * sizeof(char));
  24. if(a == -1) perror("read");
  25. else
  26. printf("Odczytano %d znaków\n", a);
  27. a = write(fd, tekst, 40 * sizeof(char));
  28. if(a == -1) perror("write");
  29. else printf("Zapisano %d bajtów\n", a);
  30. lseek(desk, -(sizeof(int) * 40), SEEK_END);
  31. a = read(desk, (void *)tekst, 40 * sizeof(char));
  32. if(a == -1) perror("read2");
  33. else printf("Odczytano %d bajtów", a);
  34. lseek(fd, 1, SEEK_END);
  35. a = write(fd, tekst, 40 * sizeof(char));
  36. if(a == -1) perror("write2");
  37. else printf("Zapisano %d bajtów\n", a);
  38.  
  39. if(desk != -1) close(desk);
  40. if(fd != -1) close(fd);
  41. return 0;
  42. }
  43.  
  44. //zad 2
  45.  
  46. vim zad2.c
  47.  
  48. gcc -o zad2 zad2.c
  49.  
  50. ./zad2
  51.  
  52. #include <sys/types.h>
  53. #include <sys/stat.h>
  54. #include <fcntl.h>
  55. #include <unistd.h>
  56. #include <stdlib.h>
  57. #include <stdio.h>
  58. #include <string.h>
  59.  
  60. int main()
  61. {
  62. int d1 = creat("z2", S_IRWXU);
  63. if(d1 == -1) perror("Creat");
  64.  
  65. int d2 = dup(d1);
  66. if(d2 == -1) printf("Nie udało się skopiować deskryptora pliku\n");
  67. else printf("Skopiowano deskryptor pliku\n");
  68. char t1[] ="Zapis t1\n";
  69. int a = write(d1, t1, strlen(t1));
  70. if(a == -1) perror("write1");
  71. else printf("Zapisano %d\n", a);
  72. char t2[] = "Zapis t2\n";
  73. a = write(d2, t2, strlen(t2));
  74. if(a == -1) perror("Write2");
  75. else printf("Zapisano d2 %d\n", a);
  76. int d3;
  77. close(d3);
  78. if(dup2(d1, d3) == -1) printf("Nie udało się skopiować desk pliku\n");
  79. else printf("Skopiowano desk pliku\n");
  80. char t3[] = "Zapis t3";
  81. a = write(d3, t3, strlen(t3));
  82. if(a == -1) perror("Write3");
  83. else printf("Zapisano d3 %d\n", a);
  84. close(d3);
  85. close(d2);
  86. close(d1);
  87.  
  88. return 0;
  89. }
  90.  
  91. //zad 3
  92.  
  93. vim zad3.c
  94.  
  95. gcc -o zad3 zad3.c
  96.  
  97. ./zad3
  98.  
  99. #include <sys/types.h>
  100. #include <sys/stat.h>
  101. #include <fcntl.h>
  102. #include <pthread.h>
  103. #include <string.h>
  104. #include <sys/file.h>
  105. #include <stdlib.h>
  106. #include <stdio.h>
  107.  
  108. void *zap(void *);
  109. int d;
  110.  
  111. int main()
  112. {
  113. d = creat("z3", S_IRWXU);
  114. pthread_t tid[20];
  115. int i;
  116. for(i = 0; i < 20; i++)
  117. {
  118. pthread_create(&tid[i], NULL, zap, (void *)&i);
  119. pthread_join(tid[i], NULL);
  120. }
  121. close(d);
  122.  
  123. return 0;
  124. }
  125.  
  126. void *zap(void * p)
  127. {
  128. int a;
  129. memcpy((void *)&a, p, sizeof(int));
  130. printf("Wątek %d\n", a);
  131. char c = a + 48;
  132. flock(d, LOCK_EX | LOCK_NB);
  133. int r = write(d, &c, sizeof(char));
  134. if(r == -1) printf("Nie udało się zapisać w wątku %d\n", a);
  135. else printf("Zapisanow w wątku %d %d bajtów\n", a, r);
  136. flock(d, LOCK_UN);
  137. return NULL;
  138. }
  139.  
  140. //zad 6
  141.  
  142. vim zad6.c
  143.  
  144. gcc -o zad6 zad6.c
  145.  
  146. ./zad6
  147.  
  148. #include <stdlib.h>
  149. #include <stdio.h>
  150. #include <sys/types.h>
  151. #include <sys/stat.h>
  152. #include <fcntl.h>
  153. #include <string.h>
  154.  
  155. int main(int argc, char *argv[])
  156. {
  157.  
  158. if(argc != 3)
  159. {
  160. printf("Podaj jako parametr ścieżkę do pliku\n");
  161. exit(0);
  162. }
  163. //printf("%s", argv[1]);
  164. char *plik = (char *)calloc(strlen(argv[1]), sizeof(char));
  165. strcpy(plik, argv[1]);
  166. char *plik2 = (char *)calloc(strlen(argv[2]), sizeof(char));
  167. strcpy(plik2, argv[2]);
  168. char p[] = "Pliki: ";
  169. char newLine[] = "\n";
  170. write(1, p, strlen(p));
  171. write(1, plik, strlen(plik));
  172. write(1, plik2, strlen(plik2));
  173. write(1, newLine, strlen(newLine));
  174. int d = open(plik, 0444);
  175. if(d == -1) perror("open\n");
  176. free(plik);
  177. off_t roz = lseek(d, 0, SEEK_END);
  178. printf("Rozmiar pliku %d bajtów\n", (int)roz);
  179. char *tmp = (char *)malloc(roz);
  180. lseek(d, 0, SEEK_SET);
  181. int r = read(d, tmp, roz);
  182. if(r == -1) perror("read");
  183. else printf("Odczytano %d bajtów\n\n", r);
  184. r = write(1, tmp, roz);
  185. if(r == -1) perror("write wys");
  186. else printf("\nWyświetlono %d bajtów\n", r);
  187. int d1 = creat(plik2, S_IRWXU);
  188. if(d1 == -1) perror("creat");
  189. free(plik2);
  190. r = write(d1, tmp, roz);
  191. if(r == -1) perror("write zap");
  192. else printf("\nZapisono %d bajtów\n", r);
  193.  
  194. free(tmp);
  195. if(d != -1) close(d);
  196. if(d1 != -1) close(d1);
  197. return 0;
  198.  
  199. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement