Funkcja Fstat w C

Funkcja Fstat W C



Funkcja fstat() wywołuje system, aby zwrócił informacje (dotyczące jakiegoś pliku), które zależą od deskryptora tego pliku. Ta funkcja uzyskuje informacje o pliku, który jest skojarzony z deskryptorem pliku, znanym również jako „fildes”, a następnie zapisuje te informacje w lokalizacji pamięci, na którą wskazuje bufor. Zwracanym typem tej funkcji jest liczba całkowita. Zwraca wartość „0”, jeśli program zostanie wykonany pomyślnie. W przeciwnym razie zwraca „-1” do funkcji w przypadku nieudanego wykonania. Błąd wykonania tej funkcji może wynikać z pewnych konkretnych powodów, takich jak: jeśli files funkcji mają niepoprawny deskryptor dla pliku, jeśli błąd odczytu wejścia i wyjścia występuje z pliku oraz jeśli lokalizacja pamięci (struktura), gdzie bufor wskazuje na zapisanie informacji o pliku nie ma wystarczającej ilości przydzielonej pamięci dla rozmiaru pliku.

Procedura

Ten artykuł jest zgodny z sekwencyjną kolejnością implementacji funkcji fstat() w celu uzyskania informacji o pliku. Najpierw uczymy się składni tej funkcji, parametrów wymaganych dla tej funkcji. Następnie używamy tej składni do wykonania kilku przykładów funkcji fstat().







Składnia

W poniższym wierszu wymieniono metodę deklarowania funkcji fstat(), która umożliwia dostęp programu do informacji o pliku:



$ #include
$ int państwo ( int fildes , struktura stat * bufia ) ;

Ilekroć musimy wywołać funkcję w naszym programie, musimy najpierw zaimportować pliki nagłówkowe obsługujące tę funkcję jako „sys/stat.h”. Zwracanym typem funkcji jest zawsze „int”, a parametr zawiera „fildes” z typem danych „int”. Fildes to deskryptor pliku, o którym chcemy poznać informacje. Kolejnym parametrem nadanym funkcji jest wskaźnik „buf”. Jest to wskaźnik „struct stat”, który wskazuje na strukturę, w której chcemy przechowywać dane o pliku. To jest krótki opis parametrów wejściowych funkcji fstat().



Przykład

Korzystamy z wcześniej wspomnianego opisu i uruchamiamy program, aby uzyskać informacje o dowolnym/konkretnym pliku za pośrednictwem naszego programu. Program ten piszemy w kompilatorze Microsoft Visual Studio C do wykonania. Zaczynamy od przykładu, najpierw tworząc projekt, a następnie dodając go do repozytoriów C w Visual Studio. Aby dodać projekt do plików C, dołączamy „.c” do nazwy projektu i dodajemy go do pliku źródłowego projektu. Kolejnym krokiem po stworzeniu projektu jest wywołanie wszystkich wymaganych bibliotek dla funkcji, z których będziemy mogli korzystać w dalszej części programu. Ponieważ implementujemy przykład dla funkcji fstat() w tym artykule, musimy dołączyć plik nagłówkowy „sys/ stat.h”. Aby uzyskać informacje o pliku, musimy znać typ urządzenia, na którym plik istnieje. Aby poznać typ danych urządzenia, dołączamy nagłówek „typ. h” w programie.





Informacje o pliku muszą zawierać czas ostatniego otwarcia pliku i dokonaną w nim modyfikację. Aby uzyskać dostęp do tych funkcji wywoływania czasu, dodajemy plik nagłówkowy „times. h” i „fcntl. h” dla funkcji uprawnień do plików. Ostatni nagłówek „stdio. Plik h” jest również zawarty w programie do wywoływania metod printf() i scanf() w programie. Pliki nagłówkowe, o których mówiliśmy, że mają zostać włączone do programu, są następujące:

$ #include
$ #include
$ #include
$ #włącz
$ #include

Po pomyślnym zaimportowaniu do programu wspomnianych wcześniej plików nagłówkowych, teraz budujemy program, aby uzyskać informacje o konkretnym pliku. Funkcję o zwracanym typie deklarujemy jako „int” o nazwie „main”. W tej funkcji głównej deklarujemy tablicę „char” i przypisujemy jej nazwę pliku, dla którego potrzebujemy znać informacje. Następnie definiujemy „informacje statystyczne” z typem danych „struct”. Ta struktura to miejsce, w którym przechowujemy informacje o pliku.



Następnie definiujemy kolejną zmienną o nazwie „file_descriptor” z typem danych jako „integer”. W warunku „if” pytamy o pozwolenie na operacje odczytu i zapisu dla pliku, jeśli istnieje, przekazując „S_IWUSR” i nazwę tablicy do funkcji „create()”, która wywołuje uprawnienia dla pliku, jeśli istnieje lub w przeciwnym razie utwórz nowy plik. Przekazujemy tę funkcję create() do „warunku if”, który stwierdza, czy wartość funkcji create() jest mniejsza niż zero, a następnie tworzy błąd, że plik musi zostać utworzony. Jeśli fstat() z parametrami „descriptor_pliku” i „informacje” oraz „adres lokalizacji, w której przechowywane są informacje o pliku” nie jest równy zero, wyświetlamy zwróconą wartość fstat(), która jest informacją o pliku . A informacje drukujemy w postaci atrybutów, np. identyfikator urządzenia, w którym przechowywany jest plik, numer i-węzła urządzenia, tryb ochrony pliku, identyfikator użytkownika, identyfikator grupy i numer łącza (twarda forma).

Po wyświetleniu tych atrybutów wychodzimy z instrukcji i zamykamy plik metodą close(). Następnie odłącz plik, wywołując metodę unlink().

#include
#include
#include
#włącz
#include

Główny ( ) {
zwęglać szyk [ ] = 'plik.wzmacniacza' ;
struktura informacje statystyczne ;
int deskryptor pliku ;
jeśli ( ( deskryptor pliku = zrobiony ( szyk , S_IWUSR ) ) < 0 )
błąd ( 'błąd tworzenia()' ) ;
w przeciwnym razie {
jeśli ( państwo ( deskryptor pliku , & Informacja ) != 0 )
błąd ( 'błąd fstat()' ) ;
w przeciwnym razie {
stawia ( 'wartości fstat():' ) ;
printf ( ' i-węzeł: %d \n ' , ( int ) informacje. st_ino ) ;
printf ( ' identyfikator_urządzenia: %d \n ' , ( int ) informacje. st_dev ) ;
printf ( ' tryb urządzenia: %08x \n ' , informacje. st_mode ) ;
printf ( ' brak_twardych_linków: %d \n ' , informacje. st_nlink ) ;
printf ( ' u_id: %d \n ' , ( int ) informacje. st_uid ) ;
printf ( ' identyfikator_g: %d \n ' , ( int ) informacje. st_gid ) ;
}
blisko ( deskryptor pliku ) ;
odczepić ( szyk ) ;
}
}

Program najpierw uzyska uprawnienia do operacji na pliku, a następnie odczyta zawarte w nim dane i zapisze je w przydzielonej lokalizacji pamięci. Atrybuty, które daliśmy programowi do wyświetlenia z pliku, są pokazane na wyjściu.

Wniosek

Użyliśmy funkcji fstat(), aby uzyskać dostęp do informacji o pliku. Najpierw poznaliśmy składnię funkcji fstat() wyjaśnioną wraz z pełnym opisem parametrów funkcji. Następnie napisaliśmy program dla tej funkcji, w którym najpierw uzyskaliśmy dostęp do uprawnień właściciela pliku, a następnie odczytaliśmy plik i wyświetliliśmy atrybuty, które chcieliśmy uzyskać z informacji o pliku. Zrobiliśmy co w naszej mocy, aby umożliwić Ci zrozumienie koncepcji fstat() i mamy nadzieję, że pomoże Ci to w twoich programach.