Lemur zaprasza
Do spisu tresci tematu 6 3.2.3 Funkcja systemowa fstat() Spis tresci Wprowadzenie Struktury danych Algorytm funkcji. Bibliografia. Wprowadzenie Funkcja fstat() sluzy do pobierania statusu pliku przechowywanego w jego i-wezle.Przekazuje takie informacje jak typ pliku,wlasciciel pliku,prawa dostepu,rozmiar pliku,liczba dowiazan,numer i-wezla i czas dostepu do pliku.Dzialanie tej funkcji sprowadza sie jedynie do przepisania zawartosci i-wezla do bufora. Spis tresci. Struktury danych Struktura old_stat Oto dokladna definicja podstawowej struktury wykorzystywanej przez opisywana funkcje.Sluzy do przechowywania informacji o pliku zaczerpnietych z i-wezla. Jest zdefiniowana w pliku include/linux/stat.h. struct old_stat { unsigned short st_dev; /*numer urzadzenia zawierajacy dany i-wezel*/ unsigned short st_ino; /*numer i-wezla*/ unsigned short st_mode; /*16-bitowy tryb pliku*/ unsigned short st_nlink;/*licznik dowiazan*/ unsigned short st_uid; /*identyfikator wlasciciela pliku*/ unsigned short st_gid; /*identyfikator grupy*/ unsigned short st_rdev; /*numer urzadzenia zwiazany z plikiem specjalnym*/ unsigned long st_size; /*aktualn wielkosc pliku*/ unsigned long st_atime;/*czas dostepu do pliku*/ unsigned long st_mtime;/*czas modyfikacji pliku*/ unsigned long st_ctime;/*czas zmiany stanu pliku*/ } Spis tresci. Algorytm funkcji DEFINICJA: int stat(int fd,struct old_stat *statbuf) WYNIK: 0 w przypadku sukcesu oraz na zmiennej stat_buf zapisuje status pliku -1 w przypadku bledu oraz na zmiennej errno: EFAULT (bledny adres) EBADF (bledny numer pliku) Pierwszym argumentem funkcji jest deskryptor pliku.Drugi argument to bufor na,ktorym znajda sie dane o pliku w przypadku poprawnego wykonania sie funkcji. Implementacja funkcji: { sprawdz mozliwosc zaalokowania pamieci na bufor ; sprawdz legalnosc deskryptora; skopiuj zawrtosc i-wezla do bufora (odpowiedzialna za to jest funkcja cp_old_stat); zwroc i-wezel; } Spis tresci. Bibliografia Pliki zrodlowe Linuxa: include/linux/stat.h (definicje struktor), fs/stat.c (implementacja). Maurice J. Bach : Budowa systemu operacyjnego UNIX - rozdial 5.11 MARC J. Rochkind: Programowanie w systemie UNIX dla zaawansowanych Spis tresci. Autor: Piotr Dada |