[ Pobierz całość w formacie PDF ]
.3.2.3 Funkcja systemowa stat()Do spisu tresci tematu 63.2.3 Funkcja systemowa stat()Spis tresciWprowadzenieStruktury danychAlgorytm funkcji.Bibliografia.WprowadzenieFunkcja stat()sluzy do pobierania statusu pliku przechowywanego w jegoi-wezle.Przekazuje takie informacje jak typ pliku,wlascicielpliku,prawa dostepu,rozmiar pliku,liczba dowiazan,numer i-wezla i czasdostepu do pliku.Dzialanie tej funkcji sprowadza sie jedynie doprzepisania zawartosci i-wezla do bufora.Spis tresci.Struktury danychStrukturaold_statOto dokladna definicja podstawowej struktury wykorzystywanej przez opisywanafunkcje.Sluzy do przechowywania informacji o pliku zaczerpnietych z i-wezla.Jest zdefiniowana w pliku include/linux/asm/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 funkcjiDEFINICJA: int stat(char *filename,struct old_stat *statbuf)WYNIK: 0 w przypadku sukcesu,a na zmiennej stat_buf zapisuje status pliku-1 oraz na zmiennej errno:EFAULT (bledny adres)ENAMETOOLONG (nazwa sciezkowa za dluga)ENOTDIR (nie jest katalogiem)EISDIR (jest katalogiem)Pierwszym argumentem funkcji jest sciezka dostepu do pliku.Drugiargument to bufor na,ktorym znajda sie dane o pliku w przypadkupoprawnego wykonania sie funkcji.Implementacja funkcji:{sprawdz mozliwosc zaalokowania pamieci na bufor *statbuf;zamien nazwe sciezkowa *filename na odpowiedni i-wezel;skopiuj zawrtosc i-wezla do bufora (odpowiedzialna za to jest funkcja cp_old_stat);zwroc i-wezel;}Spis tresci.BibliografiaPliki zrodlowe Linuxa:include/linux/stat.h (definicje struktor),fs/stat.c (implementacja).Maurice J.Bach: Budowa systemu operacyjnego UNIX - rozdial 5.11J.Rochkind : Programowanie w systemie UNIX dla zaawansowanychSpis tresci.Autor: Piotr Dada
[ Pobierz całość w formacie PDF ]