Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //zad 1
- vim zad1.c
- gcc -o zad1 zad1.c
- ./zad1
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <fcntl.h>
- #include <stdlib.h>
- #include <stdio.h>
- #include <unistd.h>
- int main()
- {
- int desk = open("emg", 0666);
- if(desk == -1) perror("open");
- int fd = creat("z", S_IRWXU);
- if(fd == -1) perror("create");
- int tekst[41];
- int a = read(desk, (void *)tekst, 40 * sizeof(char));
- if(a == -1) perror("read");
- else
- printf("Odczytano %d znaków\n", a);
- a = write(fd, tekst, 40 * sizeof(char));
- if(a == -1) perror("write");
- else printf("Zapisano %d bajtów\n", a);
- lseek(desk, -(sizeof(int) * 40), SEEK_END);
- a = read(desk, (void *)tekst, 40 * sizeof(char));
- if(a == -1) perror("read2");
- else printf("Odczytano %d bajtów", a);
- lseek(fd, 1, SEEK_END);
- a = write(fd, tekst, 40 * sizeof(char));
- if(a == -1) perror("write2");
- else printf("Zapisano %d bajtów\n", a);
- if(desk != -1) close(desk);
- if(fd != -1) close(fd);
- return 0;
- }
- //zad 2
- vim zad2.c
- gcc -o zad2 zad2.c
- ./zad2
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <fcntl.h>
- #include <unistd.h>
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
- int main()
- {
- int d1 = creat("z2", S_IRWXU);
- if(d1 == -1) perror("Creat");
- int d2 = dup(d1);
- if(d2 == -1) printf("Nie udało się skopiować deskryptora pliku\n");
- else printf("Skopiowano deskryptor pliku\n");
- char t1[] ="Zapis t1\n";
- int a = write(d1, t1, strlen(t1));
- if(a == -1) perror("write1");
- else printf("Zapisano %d\n", a);
- char t2[] = "Zapis t2\n";
- a = write(d2, t2, strlen(t2));
- if(a == -1) perror("Write2");
- else printf("Zapisano d2 %d\n", a);
- int d3;
- close(d3);
- if(dup2(d1, d3) == -1) printf("Nie udało się skopiować desk pliku\n");
- else printf("Skopiowano desk pliku\n");
- char t3[] = "Zapis t3";
- a = write(d3, t3, strlen(t3));
- if(a == -1) perror("Write3");
- else printf("Zapisano d3 %d\n", a);
- close(d3);
- close(d2);
- close(d1);
- return 0;
- }
- //zad 3
- vim zad3.c
- gcc -o zad3 zad3.c
- ./zad3
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <fcntl.h>
- #include <pthread.h>
- #include <string.h>
- #include <sys/file.h>
- #include <stdlib.h>
- #include <stdio.h>
- void *zap(void *);
- int d;
- int main()
- {
- d = creat("z3", S_IRWXU);
- pthread_t tid[20];
- int i;
- for(i = 0; i < 20; i++)
- {
- pthread_create(&tid[i], NULL, zap, (void *)&i);
- pthread_join(tid[i], NULL);
- }
- close(d);
- return 0;
- }
- void *zap(void * p)
- {
- int a;
- memcpy((void *)&a, p, sizeof(int));
- printf("Wątek %d\n", a);
- char c = a + 48;
- flock(d, LOCK_EX | LOCK_NB);
- int r = write(d, &c, sizeof(char));
- if(r == -1) printf("Nie udało się zapisać w wątku %d\n", a);
- else printf("Zapisanow w wątku %d %d bajtów\n", a, r);
- flock(d, LOCK_UN);
- return NULL;
- }
- //zad 6
- vim zad6.c
- gcc -o zad6 zad6.c
- ./zad6
- #include <stdlib.h>
- #include <stdio.h>
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <fcntl.h>
- #include <string.h>
- int main(int argc, char *argv[])
- {
- if(argc != 3)
- {
- printf("Podaj jako parametr ścieżkę do pliku\n");
- exit(0);
- }
- //printf("%s", argv[1]);
- char *plik = (char *)calloc(strlen(argv[1]), sizeof(char));
- strcpy(plik, argv[1]);
- char *plik2 = (char *)calloc(strlen(argv[2]), sizeof(char));
- strcpy(plik2, argv[2]);
- char p[] = "Pliki: ";
- char newLine[] = "\n";
- write(1, p, strlen(p));
- write(1, plik, strlen(plik));
- write(1, plik2, strlen(plik2));
- write(1, newLine, strlen(newLine));
- int d = open(plik, 0444);
- if(d == -1) perror("open\n");
- free(plik);
- off_t roz = lseek(d, 0, SEEK_END);
- printf("Rozmiar pliku %d bajtów\n", (int)roz);
- char *tmp = (char *)malloc(roz);
- lseek(d, 0, SEEK_SET);
- int r = read(d, tmp, roz);
- if(r == -1) perror("read");
- else printf("Odczytano %d bajtów\n\n", r);
- r = write(1, tmp, roz);
- if(r == -1) perror("write wys");
- else printf("\nWyświetlono %d bajtów\n", r);
- int d1 = creat(plik2, S_IRWXU);
- if(d1 == -1) perror("creat");
- free(plik2);
- r = write(d1, tmp, roz);
- if(r == -1) perror("write zap");
- else printf("\nZapisono %d bajtów\n", r);
- free(tmp);
- if(d != -1) close(d);
- if(d1 != -1) close(d1);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement