Do spisu tresci tematu 6

3.2.3 Funkcja systemowa fstat()




Spis tresci


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

  1. Pliki zrodlowe Linuxa:
  2. Maurice J. Bach : Budowa systemu operacyjnego UNIX - rozdial 5.11
  3. MARC J. Rochkind: Programowanie w systemie UNIX dla zaawansowanych

Spis tresci.


Autor: Piotr Dada