Operacje powiązane z systemem:



Podobne dokumenty
Obsługa plików. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 25 września 2011

Funkcje zawarte w bibliotece < io.h >

Laboratorium z systemów operacyjnych. System plików - funkcje systemowe. Anna Wojak

Funkcje zawarte w bibliotece < io.h >

Pliki. Funkcje tworzące pliki i operujące na nich opisane są w części 2 pomocy systemowej. Tworzenie i otwieranie plików:

Operacje na plikach. Informatyka. Standardowe strumienie wejścia i wyjścia

Wskaźniki do funkcji. Wykład 11. Podstawy programowania ( język C ) Wskaźniki do funkcji (1) Wskaźniki do funkcji (2)

Laboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach

ISO/ANSI C dostęp do plików ISO/ANSI C. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików

Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi.

Programowanie Proceduralne

ISO/ANSI C dostęp do plików ISO/ANSI C. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików

Obsługa plików Procesy

Biblioteka standardowa - operacje wejścia/wyjścia

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

۰ Elementem jednostkowym takiego pliku jest bajt. ۰ Format pliku binarnego: [bajty pliku][eof]

Strumienie i pliki. Programowanie Proceduralne 1

Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013

wer. 7 z drobnymi modyfikacjami Wojciech Myszka :48:

Temat zajęć: Obsługa systemu plików.

Programowanie w systemie UNIX

Program wykonujący operację na plikach powinien zachować schemat działania zapewniający poprawną pracę:

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1.

W języku C każdy plik fizyczny jest ciągiem bajtów, z których każdy może być niezależnie odczytany. Borland 01234

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Ghost in the machine

Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists()

ISO/ANSI C dostęp do plików ISO/ANSI C. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików

Pliki. Informacje ogólne. Obsługa plików w języku C

Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi)

Formatowane (tekstowe) wejście/wyjście. Binarne wejście/wyjście.

Łącza nienazwane(potoki)

argumenty wiersza poleceń: getopt

Programowanie Procedurale. Pliki w języku C++

Języki programowania. Przetwarzanie plików amorficznych Konwencja języka C. Część siódma. Autorzy Tomasz Xięski Roman Simiński

MATERIAŁY POMOCNICZE PODSTAWY PROGRAMOWANIA Na podstawie: Programowanie w C - Stworzone na Wikibooks, bibliotece wolny podręczników

Języki i metody programowania I

J. Ułasiewicz Pliki Pliki

Podstawy programowania w języku C++

Operacje na plikach (niskiego poziomu) < IO.H >

Podstawy programowania w języku C++

Obsługa plików. 6. Pliki 2005/2005

Programowanie w językach wysokiego poziomu

Podstawy programowania w języku C++

J. Ułasiewicz Pliki Pliki

Plik jest reprezentowany przez strumień znaków (bajtów) o zmiennej długości. Koniec strumienia identyfikowany jest znacznikiem końca pliku EOF.

Kolejki FIFO (łącza nazwane)

Instrukcja do laboratorium Systemów Operacyjnych. (semestr drugi)

Programowanie proceduralne INP001210WL rok akademicki 2015/16 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Programowanie w językach

INFORMATYKA Studia Niestacjonarne Elektrotechnika

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

System plików warstwa logiczna

Pliki. Informacje ogólne. Obsługa plików w języku C

Podstawy programowania w języku C++

Systemy Operacyjne ZAAWANSOWANE OPERACJE WEJŚCIA-WYJŚCIA DLA PLIKÓW

Politechnika Białostocka, Wydział Elektryczny, Katedra Elektrotechniki Teoretycznej i Metrologii ul. Wiejska 45D, Białystok

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Środowisko programisty

Środowisko programisty

Języki programowania. Karolina Mikulska-Rumińska Pokój 573, tel Konsultacje wtorek 9-10.

Bardzo szybkie podsumowanie: wykład 4

dr inż. Jarosław Forenc

4.2 Sposób korzystania z l acza

Pracownia Komputerowa wykład II

Argumenty wywołania programu, operacje na plikach

7 Przygotował: mgr inż. Maciej Lasota

Politechnika Białostocka, Wydział Elektryczny, Katedra Elektrotechniki Teoretycznej i Metrologii ul. Wiejska 45D, Białystok

Działanie systemu operacyjnego

Spis treści PLIKI BINARNE W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF23

PRZYKŁADY OPERACJI PLIKOWYCH z wykorzystaniem biblioteki <stdio.h>

Środowisko programisty

Procesy i potoki. S. Samolej: Procesy

Funkcje standardowej biblioteki wejść-wyjść do wyświetlania i pobierania danych

Wykład 3: Implementacja programów wbudowanych

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

#include <stdio.h> void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Systemy operacyjne System plików

Pobieranie argumentów wiersza polecenia

PODSTAW PROGRAMOWANIA WYKŁAD 7 ŁAŃCUCHY

Języki programowania. Tablice struktur, pliki struktur. Część ósma. Autorzy Tomasz Xięski Roman Simiński

Znaki globalne w Linuxie

Iteracyjny serwer TCP i aplikacja UDP

Spis treści JĘZYK C - PLIKI BINARNE. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF30

Operacje wejścia/wyjścia odsłona pierwsza

Wstęp do Programowania, laboratorium 02

ZAJĘCIA Komendy Linux WB -> w konsoli tty2 finger exit man pwd pwd finger ls man ls. -> po 2 minusach interpretacja słowa

4. Pliki Informacje ogólne o dostępie do plików w PHP Sprawdzanie istnienia pliku file_exists()

Polecenia wewnętrzne:

OPERACJE WEJŚCIA / WYJŚCIA. wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout)

Powłoka I. Popularne implementacje. W stylu sh (powłoki zdefiniowanej w POSIX) W stylu csh. bash (najpopularniejsza) zsh ksh mksh.

Spis treści PLIKI BINARNE W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF23

Działanie systemu operacyjnego

Podstawy i języki programowania

Systemy operacyjne. System operacyjny Linux - wstęp. Anna Wojak

Systemy Operacyjne 1 Laboratorium 3 Potoki i łącza nazwane w Linuksie (jeden tydzień) dr inż. Arkadiusz Chrobot

Pliki. Operacje na plikach w Pascalu

Działanie systemu operacyjnego

część 4 biblioteka standardowa wejścia - wyjścia znakowe wejście - wyjście Jarosław Gramacki Instytut Informatyki i Elektroniki

Transkrypt:

PLIKI

Operacje powiązane z systemem: funkcje biblioteczne stand. biblioteki C, libc; wykonywane jak wywołania innych funkcji; mogą wywoływać inne funkcje lub wywołania systemowe) wywołania systemowe zaimplementowane w jądrze (jądro przejmuje wykonanie programu) np. niskopoziomowe funkcje I/O niektóre wywołania tylko dla root a ok. 200; /usr/include/asm/unistd.h

polecenie strace śledzenie wykonania programu wypisuje wywołania i sygnały strace o plik polecenie

Wywołania systemowe access sprawdza uprawnienia procesu do pliku access(sciezka,uprawnienia) uprawnienia: R_OK W_OK X_OK F_OK fstat pobiera informacje o pliku pokrewne funkcje: lstat,stat wypełnia strukturę stat

fsync zapisuje na dysk dane zapisane do pliku (bez buforowania) O_SYNC w open sendfile kopiowanie (deskryptor-deskryptor) bez bufora readlink writev wektorowy zapis/odczyt

Funkcje I/O niskiego poziomu wywołania systemowe - dostęp do sterowników urządzeń open read write close ioctl specyficzne sterowanie urządzeniem program deskryptory plików (0, 1, 2,..) bez buforowania stdio.h stdout - buforowanie stderr - nie

write #include <unistd.h> size_t write(int despliku, const void *bufor, size_t nbajtów) Zwraca: liczbę zapisanych bajtów 0 koniec pliku -1 błąd read #include <unistd.h> size_t read(int despliku, void *bufor, size_t nbajtów) zwraca: liczbę przeczytanych bajtów 0 koniec pliku -1 błąd

open #include <fcntl.h> #include <sys/types.h> #include <sys/stat.h> int open(const char *ścieŝka, int oflagi); int open(const char *ścieŝka, int oflagi, mode_t tryb); Zwraca deskryptor pliku (niepowtarzalny; najniŝszy nieuŝywany) -1 błąd; ustawia errno oflagi: O_RDONLY O_WRONLY O_RDWR O_APPEND O_TRUNC O_CREAT konieczny 3 parametr -tryb O_EXECL O_SYNC tryb: S_I{R,W,X}{USR,GRP,OTH} S_IRUSR S_IXGRP

Ŝądane prawa dostępu są ustawiane zaleŝnie od umask polecenie: umask 037 w C: umask(s_irwxo S_IWXGRP) open( O_CREAT O_EXECL,..) niepodzielne sprawdzenie + otwarcie blokowanie plików ->synchronizacja

#include <unistd.h> int close(int despliku); close Uwalnia deskryptor pliku Zwraca: 0, -1 OPEN_MAX (limits.h) określa limit plików ioctl #include <unistd.h> int ioctl(int despliku, int komenda, ); wykonuje komenda na pliku wskazanym przez despliku

lseek ustawia wskaźnik odczytu/zapisu deskryptora pliku #include <unistd.h> #include <sys/types.h> off_t lseek(int despliku, off_t przesunięcie, int skąd); skąd: SEEK_SET SEEK_CUR SEEK_END dup dup2 zwielokrotnia deskryptor pliku dup przydziela najniŝszy nieuŝywany deskryptor #include <unistd.h> int dup(int despliku); int dup2(int des1pliku, int des2pliku);

unlink zmniejsza l. dowiązań do pliku ( korzysta z tego rm) link tworzy link twardy symlink tworzy link symboliczny #include <unistd.h> int unlink(const char *ścieŝka); int link(const char *ścieŝka1, const char *ścieŝka2); int symlink(const char *ścieŝka1, const char *ścieŝka2); chmod #include sys/stat.h> int chmod(const char *ścieŝka, mode_t tryb);

Dostęp do katalogów mkdir #include <sys/stat.h> int mkdir(const char *ścieŝka, mode_t tryb); rmdir chdir getcwd #include<unistd.h> int rmdir(const char *ścieŝka) int chdir(const char *ścieŝka) char *getcwd(char *bufor, size_t rozmiar) opendir readdir telldir seekdir closedir #include<sys/types.h> #include<dirent.h> DIR *opendir(const char *nazwa); struct dirent *readdir(dir *katwskaźnik); dirent: ino_t d_ino char d_name[] long int telldir(dir *katwskaźnik); ->pozycja w strumieniu katalogu (lokalizacja) void seekdir(dir *katwskaźnik, long int lokalizacja); int closedir(dir *katwskaźnik);

standardowa biblioteka we/wy stdio.h - dostarcza interfejs do niskopoziomowych wywołań systemowych we/wy odpowiednik deskryptora pliku niskiego poziomu strumień (stream) FILE* stdin, stdout, stderr odpowiadają deskryptorom 0, 1 2 fopen fclose fread fwrite fflush fseek fgetc, getc, getchar fputc, putc, putchar fgets, gets printf, fprintf, sprintf scanf, fscanf, sscanf

Błędy strumieni ferror feof clearerr #include<stdio.h> int ferror(file *strumień); int feof(file *strumień); void clearerr(file *strumień);

Program kopiujący pliki niskopoziomowy: open, read, write znak po znaku blokami za pomocą fcji z stdio.h : fopen, fgetc, fputc za pomocą fcji z stdio.h : fopen, fgets, fputs za pomocą sendfile/socket time prog porównanie czasów stdio wewnętrzny bufor w strukturze FILE; wywołania systemowe niskiego poziomu wykonywane tylko po zapełnieniu bufora

strumień pliku a deskrytptor niskiego poziomu #include <stdio.h> int fileno(file *strumień); FILE *fdopen(int despliku, const char *tryb); fileno zwraca deskryptor dla strumienia pliku lub -1 fdopen jak fopen; zwraca nowy strumień pliku lub NULL

zewnętrzna zmienna errno #include <errno.h> extern int errno; EPREM ENOENT EEXIST EINVAL niedozwolona operacja nie ma takiego pliku plik istnieje niedozwolony argument strerror zwraca ciąg opisujący błąd #include <string.h> char *strerror(int numerbłędu); perror opis błędu poprzedza komunikatem s #include <stdio.h> void perror(const char *s);

fcntl daje moŝliwości działania na niskopoziomowych deskryptorach plików #include <unistd.h> int fcntl(int deskr, int polecenie, long arg); Polecenie: F_DUPFD - dup F_GETFD F_SETFD - 2 arg.; zwraca znaczniki pliku - ustawia znaczniki (FD_CLOEXEC) F_GETLK, F_SETLK, F_SETLKW - blokowanie obszarów plików -> synchronizacja ( niskopoziomowe operacje we/wy) /proc/locks

mmap - mapowanie pamięci tworzy wskaźnik do obszaru pamięci związanego z plikiem o deskryptorze deskr #include<sys/mman.h> void *mmap(void *adres, size_t długość, int prot, int flagi, int deskr, off_t off); int msync(void *adres, size_t długość, int znaczniki); int munmap(void *adres, size_t długość); msync zapis zmian pamięć plik munmap zwolnienie segmentu pamięci

void *mmap(void *adres, size_t długość, int prot, int flagi, int deskr, off_t off); adres konkretny adres pamięci; 0 wskaźnik przydzielony automatycznie długość rozmiar danych do zmapowania(długość segmentu pamięci) prot prawa dostępu do segmentu pamięci: PROT_READ, PROT_WRITE, PROT_EXEC, PROT_NONE flagi opcje mapowania off offset w pliku

Kompresja compress lista_naw_plików plik zastapiony zostaje przez plik.z -v komentarze o kaŝdym pliku uncompress lista zcat plik.z

kompresja gzip lista_nazw_plików gzip plik plik zamieniony na plik.gz gunzip lista gzip d lista gunzip plik - plik.z; plik.gz stopnie kompresji (1-9) domyślnie gzip -6 opcja r katalog dla gzip, gunzip, gzip d opcja c standardowe wy (nie nadpisuje plików) zcat plik.gz zcat plik

Archiwizacja tar tworzy archiwum plików i katalogów umoŝliwia uaktualnianie umoŝliwia rozszerzanie archiwum na dowolnym urządzeniu, w pliku na dysku cel kopia zapasowa; łączenie np. w celu przesłania konwencja pliki archiwum *.tar

tar tar opcje f nazwa_arch.tar lista pliki we. nie są kasowane opcje: c twórz archiwum t wylistuj zawartość archiwum x odzyskaj zawartość archiwum r - dołącz plik do archiwum u uaktualnij M archiwum na wielu nośnikach z kompresja archiwizowanych plików programem gzip nie da się ich uaktualniać ani listować zawartości (u,r,t) v wyświetlenie nazw plików f wskazuje nazwę pliku archiwum (/etc/default/tar) - - standardowe we/wy C zmiana bieŝącego katalogu p zachowanie właściciela i praw dostępu

tar cf arch.tar programy tar cvf arch.tar programy tar xf arch.tar tar rf arch.tar programy2 tar uvf arch.tar programy tar tvf arch.tar tar tf arch.tar tar cfm /dev/fd0 programy tar xf /dev/fd0 tar czf arch.tar programy tar xzf arch.tar tar cf - -C /kat katstary tar xvpf -

Archiwum skompresowane tar cvf arch1.tar k* tar tvf arch1.tar gzip arch1.tar arch1.tar.gz 1. gunzip arch1.tar.gz; tar xvf arch1.tar 2. tar xzvf arch1.tar.gz 3. gunzip -c arch1.tar.gz tar xvf- (- dane we. pochodzą z potoku) -c wy na stdout

Skompresowane archiwum złoŝone ze skompresowanych plików tar cvzf arch1.tar k* tar tvf arch1.tar -- źle; (opcje u, r teŝ niedopuszczalne) gzip arch1.tar arch1.tar.gz 1. gunzip arch1.tar.gz; tar xzvf arch1.tar 2. tar xzvf arch1.tar.gz ---źle 3. gunzip -c arch1.tar.gz tar xzvf-

Sprawdzanie miejsca na dysku du podaje wielkość obszaru zajętego df podaje obszar dostępny w systemie plików

Główna literatura do laboratorium: but M.Mitchell, J.Oldham,A.Samuel Linux Programowanie dla zaawansowanych ciuchcia N.Mattew, R.Stones Linux Programowanie

PLIKI zadania: 1,2 - obowiązkowe; 3,4,5 - dodatkowe 1. sprawdzenie buforowania stdout, stderr - funkcje z stdio.h - niskopoziomowe 2. porównanie czasów kopiowania duŝego pliku (time) - wywołania niskopoziomowe po znaku - wywołania niskopoziomowe blokami (1024B, 4096B) - funkcje z stdio.h po znaku (fgetc, fputc) - funkcje z stdio.h blokami (fgets, fputs) (1024B, 4096B) 3. utworzenie duŝego pliku wypełnionego zerami, który nie zajmuje miejsca (lseek) 4. szukanie pliku wg. nazwy w drzewie katalogowym + wyświetlenie informacji o znalezionym pliku: typ, rozmiar parametry : 1 - nazwa pliku; 2 - nazwa katalogu startowego do szukania 5. zapis nieciągłych obszarów pamięci - wektorowy (writev)