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

Podobne dokumenty
Obsługa plików Procesy

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

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

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

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

Kolejki FIFO (łącza nazwane)

Plik jest poj eciem, z którym spotyka si e niemal każdy użytkownik systemu komputerowego, nawet

Funkcje zawarte w bibliotece < io.h >

Funkcje zawarte w bibliotece < io.h >

Procesy. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 9 października 2011

Operacje powiązane z systemem:

System plików warstwa logiczna

Programowanie w systemie UNIX

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

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

4.2 Sposób korzystania z l acza

Iteracyjny serwer TCP i aplikacja UDP

Temat zajęć: Obsługa łączy komunikacyjnych

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

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

ang. file) Pojęcie pliku (ang( Typy plików Atrybuty pliku Fragmentacja wewnętrzna w systemie plików Struktura pliku

4. Komunikacja pomiędzy procesami przez łącza nienazwane i nazwane

Systemy Operacyjne - Operacje na plikach

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

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

Programowanie w językach

Łącza nienazwane(potoki)

J. Ułasiewicz Programowanie aplikacji współbieżnych 1

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

Programowanie Proceduralne

systemu operacyjnego UNIX Funkcje jadra Spis treści Dariusz Wawrzyniak 20 października Wst ep 5

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

Wstęp do Programowania, laboratorium 02

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

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

Programowanie w ANSI C z wykorzystaniem funkcji jądra systemu UNIX/Linux

Biblioteka standardowa - operacje wejścia/wyjścia

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

aodczytywać zniegoza pomoc afunkcjiread, (niebuforowane funkcje wejścia/wyjścia). e sukcesem, to zwróci liczb, erzeczywiściezapisanychbajtów.

Programowanie Procedurale. Pliki w języku C++

Funkcje jadra systemu operacyjnego UNIX

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

Pobieranie argumentów wiersza polecenia

Funkcje jadra systemu operacyjnego UNIX

Wykład 5_2 Algorytm ograniczania liczby serii za pomocą kopcowego rozdzielania serii początkowych

Argumenty wywołania programu, operacje na plikach

Programowanie w językach wysokiego poziomu

Metody zawarte w klasie File: boolean createnewfile() tworzy nowy, pusty plik, ale tylko jeśli on wcześniej nie istniał. boolean delete() usuwa dany

Linux Kernel III. Character devices

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

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

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

IPC: Kolejki komunikatów

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

Systemy operacyjne System plików

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

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

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO

Podstawy programowania w języku C++

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

System plików. Warstwowy model systemu plików

Literatura uzupełniająca: W. Richard Stevens, Programowanie zastosowań sieciowych w systemie Unix WNT 1998

sposób wykonywania operacji zapisu i odczytu dane odczytywane z l acza usuwane (nie można ich odczytać ponownie),

Gniazda BSD. komunikacja bezpołączeniowa

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

Podstawy i języki programowania

Wskaźniki. Informatyka

J. Ułasiewicz Łącza nienazwane, nazwane, select 1

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego

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

4. Tablica dwuwymiarowa to jednowymiarowa tablica wskaźników do jednowymiarowych tablic danego typu.

Zaawansowane operacje wejścia/wyjścia

Języki i metodyka programowania. Wprowadzenie do języka C

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

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

J. Ułasiewicz Łącza nienazwane, nazwane, select 1

Zaawansowane operacje wejścia/wyjścia

// Liczy srednie w wierszach i kolumnach tablicy "dwuwymiarowej" // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib.

Pliki. Operacje na plikach w Pascalu

3. Identyfikacja. SKŁADNIA #include <sys/socket.h> int getpeername(int socket, struct sockaddr *addr, int *addrlen);

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Zaawansowane operacje wejścia/wyjścia

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

// Potrzebne do memset oraz memcpy, czyli kopiowania bloków

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

Języki i paradygmaty programowania 1 studia stacjonarne 2018/19. Lab 9. Tablice liczbowe cd,. Operacje na tablicach o dwóch indeksach.

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

Programowanie Proceduralne

Schematy blokowe. Algorytmy Marek Pudełko

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

Zaawansowane operacje wejścia/wyjścia

Wprowadzenie do programowania i programowanie obiektowe

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

Lab 8. Tablice liczbowe cd,. Operacje macierzowo-wektorowe, memcpy, memmove, memset. Wyrażenie warunkowe.

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

Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi)

Operacje wejścia/wyjścia (odsłona druga) - pliki

Rys. 9-1 Procesy P1 i P2 komunikuję się poprzez wspólny obszar. pamięci.

Struktury. Przykład W8_1

Transkrypt:

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

Plan zajęć 1 Pliki w systemie Linux i-węzły deskryptory plików 2 Operacje na plikach otwieranie i zamykanie zapis i odczyt skanowanie i skracanie tworzenie i usuwanie 3 Operacje na deskryptorach 4 Zadania Mateusz Hołenko Obsługa plików [1/15]

Pliki w systemie Linux

I-węzły (ang. I-nodes) plik podstawowa forma przechowywania danych w komputerze dla systemu operacyjnego plik jest ciągiem bajtów przechowywanych najczęściej w pamięci nieulotnej i-węzeł struktura systemu plików w tradycyjnych Linux ach zawierająca metainformacje o pliku, m.in.: właściciel pliku, prawa dostępu typ pliku, czasy dostępu ilość dowiązań, rozmiar pliku wskaźnik na fizyczną lokalizację pliku na dysku i-węzeł nie zawiera nazwy pliku ani ścieżki do niego! Mateusz Hołenko Obsługa plików [3/15]

I-węzły (ang. I-nodes) plik podstawowa forma przechowywania danych w komputerze dla systemu operacyjnego plik jest ciągiem bajtów przechowywanych najczęściej w pamięci nieulotnej i-węzeł struktura systemu plików w tradycyjnych Linux ach zawierająca metainformacje o pliku, m.in.: właściciel pliku, prawa dostępu typ pliku, czasy dostępu ilość dowiązań, rozmiar pliku wskaźnik na fizyczną lokalizację pliku na dysku i-węzeł nie zawiera nazwy pliku ani ścieżki do niego! Mateusz Hołenko Obsługa plików [3/15]

I-węzły (ang. I-nodes) plik podstawowa forma przechowywania danych w komputerze dla systemu operacyjnego plik jest ciągiem bajtów przechowywanych najczęściej w pamięci nieulotnej i-węzeł struktura systemu plików w tradycyjnych Linux ach zawierająca metainformacje o pliku, m.in.: właściciel pliku, prawa dostępu typ pliku, czasy dostępu ilość dowiązań, rozmiar pliku wskaźnik na fizyczną lokalizację pliku na dysku i-węzeł nie zawiera nazwy pliku ani ścieżki do niego! Mateusz Hołenko Obsługa plików [3/15]

Deskryptory plików system plików przechowuje informacje o plikach w globalnej tablicy i-węzłów użytkownik odwołuje się do plików przez nazwy, systemu operacyjny przez indeks i-węzła w globalnej tablicy (identyfikator i-węzła, deskryptor pliku) każdy proces posiada lokalną tablicę i-węzłów (tablicę deskryptorów plików) zawierającą pliki skojarzone z procesem tablica jest niedostępna bezpośrednio dla programisty odwołuje się do niej przez wywołania funkcji systemowych domyślnie tablica zawiera trzy wpisy 0 stdin standardowe wejście 1 stdout standardowe wyjście 2 stderr standardowe wyjście diagnostyczne Mateusz Hołenko Obsługa plików [4/15]

Deskryptory plików system plików przechowuje informacje o plikach w globalnej tablicy i-węzłów użytkownik odwołuje się do plików przez nazwy, systemu operacyjny przez indeks i-węzła w globalnej tablicy (identyfikator i-węzła, deskryptor pliku) każdy proces posiada lokalną tablicę i-węzłów (tablicę deskryptorów plików) zawierającą pliki skojarzone z procesem tablica jest niedostępna bezpośrednio dla programisty odwołuje się do niej przez wywołania funkcji systemowych domyślnie tablica zawiera trzy wpisy 0 stdin standardowe wejście 1 stdout standardowe wyjście 2 stderr standardowe wyjście diagnostyczne Mateusz Hołenko Obsługa plików [4/15]

Deskryptory plików system plików przechowuje informacje o plikach w globalnej tablicy i-węzłów użytkownik odwołuje się do plików przez nazwy, systemu operacyjny przez indeks i-węzła w globalnej tablicy (identyfikator i-węzła, deskryptor pliku) każdy proces posiada lokalną tablicę i-węzłów (tablicę deskryptorów plików) zawierającą pliki skojarzone z procesem tablica jest niedostępna bezpośrednio dla programisty odwołuje się do niej przez wywołania funkcji systemowych domyślnie tablica zawiera trzy wpisy 0 stdin standardowe wejście 1 stdout standardowe wyjście 2 stderr standardowe wyjście diagnostyczne Mateusz Hołenko Obsługa plików [4/15]

Operacje na plikach i deskryptorach

Otwieranie i zamykanie plików otwieranie plików pathname nazwa pliku (wraz ze ścieżką) flags flagi otwarcia pliku, m.in.: O_WRONLY, O_RDONLY, O_RDWR, O_APPEND, O_CREAT, O_TRUNC mode prawa dostępu tworzonego pliku int open(const char* pathname, int flags) int open(const char* pathname, int flags, mode_t mode) zamykanie pliku fd deskryptor zamykanego pliku int close(int fd) Mateusz Hołenko Obsługa plików [6/15]

Otwieranie i zamykanie plików otwieranie plików pathname nazwa pliku (wraz ze ścieżką) flags flagi otwarcia pliku, m.in.: O_WRONLY, O_RDONLY, O_RDWR, O_APPEND, O_CREAT, O_TRUNC mode prawa dostępu tworzonego pliku int open(const char* pathname, int flags) int open(const char* pathname, int flags, mode_t mode) zamykanie pliku fd deskryptor zamykanego pliku int close(int fd) Mateusz Hołenko Obsługa plików [6/15]

Otwieranie i zamykanie plików przykładowy program #include <fcntl.h> #include <stdio.h> #include <unistd.h> #include <errno.h> int main(int argc, char* argv[]) { int fd; if (argc!= 2) { printf("usage: fexist [filepath]\n"); return 1; } fd = open(argv[1], O_RDONLY); if (fd == -1) { printf("couldn t open file %s (error code %d)\n", argv[1], errno); perror("opening file"); return 2; } else { printf("file %s opened successfully!\n", argv[1]); if (close(fd) == -1) { printf("couldn t close file %s (error code %d)\n", argv[1], errno); perror("closing file"); } } return 0; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 Mateusz Hołenko Obsługa plików [7/15]

Odczyt i zapis danych odczyt danych z plików fd deskryptor pliku (uzyskany z funkcji open) buf adres początku obszaru pamięci, w którym zostaną umieszczone odczytane dane count liczba bajtów do odczytu ssize_t read(int fd, void* buf, size_t count) zapis danych do pliku fd deskryptor pliku (uzyskany z funkcji open) buf adres początku obszaru pamięci, zawierającego blok danych do zapisania count liczba bajtów do zapisania ssize_t write(int fd, const void* buf, size_t count) Mateusz Hołenko Obsługa plików [8/15]

Odczyt i zapis danych odczyt danych z plików fd deskryptor pliku (uzyskany z funkcji open) buf adres początku obszaru pamięci, w którym zostaną umieszczone odczytane dane count liczba bajtów do odczytu ssize_t read(int fd, void* buf, size_t count) zapis danych do pliku fd deskryptor pliku (uzyskany z funkcji open) buf adres początku obszaru pamięci, zawierającego blok danych do zapisania count liczba bajtów do zapisania ssize_t write(int fd, const void* buf, size_t count) Mateusz Hołenko Obsługa plików [8/15]

Odczyt i zapis danych przykładowy program... char buf[20]; int n; while ((n = read(fd, buf, 20)) > 0) { write(1, buf, n); }... 1 2 3 4 5 6 7 8 9 10 11 Mateusz Hołenko Obsługa plików [9/15]

Przesuwanie wskaźnika bieżącej pozycji i skracanie przesuwanie wskaźnika fd deskryptor pliku (uzyskany z funkcji open) offset wielkość przesunięcia count odniesienie: SEEK_SET, SEEK_CUR, SEEK_END off_t lseek(int fd, off_t offset, int whence) skracanie pliku path nazwa pliku (wraz ze ścieżką) fd deskryptor pliku (uzyskany z funkcji open) length docelowa długość pliku int truncate(const char* path, off_t length) int ftruncate(int fd, off_t length) Mateusz Hołenko Obsługa plików [10/15]

Przesuwanie wskaźnika bieżącej pozycji i skracanie przesuwanie wskaźnika fd deskryptor pliku (uzyskany z funkcji open) offset wielkość przesunięcia count odniesienie: SEEK_SET, SEEK_CUR, SEEK_END off_t lseek(int fd, off_t offset, int whence) skracanie pliku path nazwa pliku (wraz ze ścieżką) fd deskryptor pliku (uzyskany z funkcji open) length docelowa długość pliku int truncate(const char* path, off_t length) int ftruncate(int fd, off_t length) Mateusz Hołenko Obsługa plików [10/15]

Tworzenie i usuwanie plików tworzenie pliku pathname nazwa pliku (wraz ze ścieżką) mode prawa dostępu tworzonego pliku int creat(const char* pathname, mode_t mode) usuwanie pliku pathname nazwa pliku (wraz ze ścieżką) int unlink(const char* pathname) Mateusz Hołenko Obsługa plików [11/15]

Tworzenie i usuwanie plików tworzenie pliku pathname nazwa pliku (wraz ze ścieżką) mode prawa dostępu tworzonego pliku int creat(const char* pathname, mode_t mode) usuwanie pliku pathname nazwa pliku (wraz ze ścieżką) int unlink(const char* pathname) Mateusz Hołenko Obsługa plików [11/15]

Operacje na deskryptorach tworzenie duplikatu deskryptora oldfd deskryptor do powielenia newfd numer nowo przydzielanego deskryptora int dup(int oldfd) int dup2(int oldfd, int newfd) Mateusz Hołenko Obsługa plików [12/15]

Zadania

Zadania Zadanie 1 Napisz program kopiujący zawartość pliku o nazwie podanej jako pierwszy parametr do pliku, którego nazwa podana jest jako drugi parametr. Zadanie 2 Napisz program zmieniający kolejność znaków w każdej linii pliku o nazwie podanej jako parametr. Zadanie 3 Napisz program wyszukujący najdłuższą linię w pliku i podający ilość znaków w tej linii. Mateusz Hołenko Obsługa plików [14/15]

Zadania Zadanie 1 Napisz program kopiujący zawartość pliku o nazwie podanej jako pierwszy parametr do pliku, którego nazwa podana jest jako drugi parametr. Zadanie 2 Napisz program zmieniający kolejność znaków w każdej linii pliku o nazwie podanej jako parametr. Zadanie 3 Napisz program wyszukujący najdłuższą linię w pliku i podający ilość znaków w tej linii. Mateusz Hołenko Obsługa plików [14/15]

Zadania Zadanie 1 Napisz program kopiujący zawartość pliku o nazwie podanej jako pierwszy parametr do pliku, którego nazwa podana jest jako drugi parametr. Zadanie 2 Napisz program zmieniający kolejność znaków w każdej linii pliku o nazwie podanej jako parametr. Zadanie 3 Napisz program wyszukujący najdłuższą linię w pliku i podający ilość znaków w tej linii. Mateusz Hołenko Obsługa plików [14/15]

Zadania Zadanie 4 Napisz program określający rozmiar pliku/kilku plików o nazwach podanych jako parametry wejściowy. Zadanie 5 Napisz program wypisujący od końca zawartość pliku (1) znakami, (2) liniami. Mateusz Hołenko Obsługa plików [15/15]

Zadania Zadanie 4 Napisz program określający rozmiar pliku/kilku plików o nazwach podanych jako parametry wejściowy. Zadanie 5 Napisz program wypisujący od końca zawartość pliku (1) znakami, (2) liniami. Mateusz Hołenko Obsługa plików [15/15]