stat()
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.
old_stat
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*/ }
DEFINICJA:Pierwszym argumentem funkcji jest sciezka dostepu do pliku.Drugi argument to bufor na,ktorym znajda sie dane o pliku w przypadku poprawnego wykonania sie funkcji.int stat(char *filename,struct old_stat *statbuf)
WYNIK: 0 w przypadku sukcesu oraz zmiennejstat_buf
zapisuje status pliku -1 w przypadku bledu oraz na zmiennej errno: EFAULT (bledny adres) ENAMETOOLONG (nazwa sciezkowa za dluga) ENOTDIR (nie jest katalogiem) EISDIR (jest katalogiem)
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 funkcjacp_old_stat
); zwroc i-wezel; }
include/linux/stat.h
(definicje struktor),
fs/stat.c
(implementacja).