Index Aronson Elliot, Wilson Timothy D., Akert Robin M. Psychologia społeczna (11) Bettelheim Bruno Cudowne i pożyteczne O znaczeniach i wartociach bani (11) Dodziuk Anna Psychologia podręczna Częć III Pokochać (11) Kratochvil Stanisław Psychoterapia Kierunki metody badania (11) 08 (441) chip 4 Stanisław Lem Dzienniki Gwiazdowe(Tom I) abc.com.pl 7 abc.com.pl 5 color temperature |
[ Pobierz całość w formacie PDF ] .Do spisu tresci tematu 66.5 Zmiana biezacej pozycji w plikuSpis tresciWprowadzenieOpis dzialaniaDeklaracja, argumenty i wartosci zwracaneBibliografiaPytania i odpowiedziWprowadzenieDo zmiany aktualnej pozycji w pliku sluzy funkcja lseek().Dzieki niej nie jest wymuszony sekwencyjny dostep do danych.Za jej pomocamozna przesunac pozycje w pliku zarowno "w przod", jak i "wtyl" oraz do konkretnej pozycji (liczac od poczatku, konca lub aktualnejpozycji w pliku).Opis dzialaniaFunkcja otrzymuje jako parametry deskryptor pliku, pozycje w pliku orazparametr, za pomoca ktorego interpretuje sie pozycje.Na poczatku sprawdzana jest poprawnosc otrzymanego deskryptora pliku.Sprawdzane jest, czy nie jest on wiekszy od dopuszczalnego (NR_OPEN),czy w tablicy plikow w odpowiednim miejscu znajduje sie plik oraz czy odpowiadamu i-wezel.Sprawdzana jest takze poprawnosc ostatniego parametru (musito byc liczba rowna 0, 1 lub 2).Odczytywana jest przy tym z tablicy systemowejstruktura dla danego pliku (o ile wogole istnieje).W przypadku ktoregokolwiekz bledow funkcja konczy swe dzialanie z bledem.Nastepnie sprawdzane jest, czy system plikow, w jakim zapisany jestaktualny, posiada wlasna procedure obslugi tej operacji.Jesli tak, jestona wywolywana i jej wynik zwracany jest jako wynik dzialania calej funkcji.W przeciwnym wypadku wykonywana jest standardowa obsluga.Korzystaz niej miedzy innymi system EXT2, na ktorym sie opieralem.W zaleznosci od trzeciego parametru obliczana jest nowa pozycja w pliku:dla 0 - pozycja bezwzgledna, podana parametrem,dla 1 - pozycja wzgledem aktualnej pozycji w plikudla 2 - pozycja wzgledem konca plikuJezeli w wyniku tej opracji dostanie sie liczbe ujemna, funkcja konczyzwracajac blad.W przeciwnym wypadku, jezeli nowa pozycja jest rozna od aktualnej,ustawiana jest nowa pozycja w strukturze dla danego pliku (file->f_pos),kasowany jest znacznik dla funkcji odpowiedzialnej za odczyt z wyprzedzeniem(file->f_reada, patrz funkcja read()) oraz zmienianejest pole z numerem "wersji" pliku (file->f_version).Funkcja konczy dzialanie jako wynik zwracajac nowa pozycje w pliku.Deklaracja, argumenty oraz wartosci zwracane przez funkcjeDeklaracja funkcji:int sys_lseek(unsigned int fd, off_t offset, unsigned int origin);Argumenty:fd - deskryptor do pliku na ktorym operujemyoffset - nowa pozycja w pliku (byc moze wzgledna)origin - parametr sluzacy interpretacji drugiego parametru.Musi byc to liczba rowna 0, 1 lub 2.interpretacja odpowiednich wartoscizostala omowiona w opisie dzialania.Wyniki:W przypadku powodzenia funkcja zwraca nowa pozycje w pliku, w przeciwnymwypadku wartosc mniejsza od zera:Jezeli podany deskryptor pliku jest bledny, zwracane jest -EBADF.Jezeli bledna byla wartosc trzeciego parametru lub obliczona pozycjaw pliku byla mniejsza od 0, zwracana jest wartosc -EINVAL.Jezeli dany system plikow posiada wlasna procedure obslugi lseek(),zwracany jest wynik dzialania tej funkcji.Zrodla informacjiZrodla jadra:fs/read_write.cPytania i odpowiedziNa razie brak jednych i drugich.Autor: LukaszMasko [ Pobierz całość w formacie PDF ] |
||||
Wszelkie Prawa Zastrzeżone! Kawa była słaba i bez smaku. Nie miała treści, a jedynie formę. Design by SZABLONY.maniak.pl. | |||||