Fstat funkcija u C-u

Fstat Funkcija U C U



Funkcija fstat() poziva sustav da vrati informacije (u vezi s nekom datotekom) koje ovise o deskriptoru te datoteke. Ova funkcija dobiva informacije za datoteku koja je povezana s deskriptorom datoteke također poznatim kao 'fildes' i zatim zapisuje te informacije u memorijsku lokaciju na koju pokazuje međuspremnik. Tip povrata ove funkcije je cijeli broj. Vraća vrijednost “0” ako je program uspješno izvršen. U suprotnom, vraća '-1' funkciji u slučaju neuspješnog izvođenja. Pogreška u izvršavanju ove funkcije može biti uzrokovana određenim razlozima, primjerice ako polja funkcije imaju nevažeći deskriptor za datoteku, ako se pogreška čitanja za ulaz i izlaz javlja iz datoteke i ako memorijska lokacija (struktura) gdje međuspremnik upućuje na pisanje podataka o datoteci nema dovoljno dodijeljene memorije za veličinu datoteke.

Postupak

Ovaj članak slijedi redoslijed implementacije funkcije fstat() za dobivanje podataka o datoteci. Prvo učimo sintaksu za ovu funkciju, parametre potrebne za ovu funkciju. Zatim koristimo ovu sintaksu za izvođenje nekih primjera za funkciju fstat().







Sintaksa

Metoda za deklariranje funkcije fstat() koja omogućuje pristup programa informacijama o datoteci spominje se u sljedećem retku:



$ #include
$ int država ( int fildes , strukturirati stat * buf ) ;

Kad god moramo pozvati funkciju u našem programu, prvo moramo uvesti datoteke zaglavlja koje podržavaju ovu funkciju kao 'sys/stat.h'. Vrsta povrata za funkciju uvijek je 'int', a parametar uključuje 'fildes' s tipom podataka 'int'. Fildes je deskriptor za datoteku o kojoj želimo znati informacije. Još jedan parametar koji se daje funkciji je pokazivač 'buf'. To je pokazivač 'struct stat' koji pokazuje prema strukturi u koju želimo pohraniti podatke o datoteci. Ovo je kratak opis ulaznih parametara za funkciju fstat().



Primjer

Koristimo prethodno spomenuti opis i izvršavamo program za dobivanje informacija o bilo kojoj / određenoj datoteci putem našeg programa. Ovaj program pišemo u Microsoft Visual Studio C kompajleru za izvođenje. Počinjemo s primjerom tako da prvo stvorimo projekt, a zatim ga dodamo u C repozitorije u Visual Studiju. Da bismo dodali projekt u C datoteke, uključujemo '.c' uz naziv projekta i dodajemo ga u izvornu datoteku projekta. Sljedeći korak nakon izrade projekta je pozivanje svih potrebnih biblioteka za funkcije koje ćemo kasnije možda koristiti u programu. Budući da u ovom članku implementiramo primjer za funkciju fstat(), moramo uključiti datoteku zaglavlja 'sys/stat.h'. Za informacije o datoteci moramo znati vrstu uređaja na kojem datoteka postoji. Da bismo znali vrstu podataka za uređaj, uključujemo zaglavlje 'type. h” u programu.





Podaci o datoteci moraju sadržavati vrijeme kada je datoteka posljednji put otvorena i izmjene koje su u njoj napravljene. Za pristup tim funkcijama pozivanja vremena dodajemo datoteku zaglavlja 'times. h” i “fcntl. h” zaglavlje za funkcije dopuštenja datoteke. Posljednje zaglavlje “stdio. h” također je uključena u program za pozivanje metoda printf() i scanf() u programu. Datoteke zaglavlja za koje smo razgovarali da budu uključene u program su sljedeće:

$ #include
$ #include
$ #include
$ #include
$ #uključi

Nakon što su prethodno spomenute datoteke zaglavlja uspješno uvezene u program, sada gradimo program za dobivanje informacija o određenoj datoteci. Funkciju koja ima tip povrata deklariramo kao 'int' s imenom 'main'. U ovoj glavnoj funkciji deklariramo polje 'char' i dodjeljujemo mu naziv datoteke za koju trebamo znati informacije. Zatim definiramo 'stat informacije' s tipom podataka 'struct'. Ova struktura je mjesto gdje pohranjujemo informacije o datoteci.



Zatim definiramo drugu varijablu s nazivom “file_descriptor” s tipom podataka kao “integer”. U 'if uvjetu', tražimo dopuštenje za operacije čitanja i pisanja za datoteku ako postoji, prosljeđujući 'S_IWUSR' i naziv niza funkciji 'create()' koja poziva dopuštenja za datoteku ako postoji ili na drugi način stvorite novu datoteku. Ovu funkciju create() prosljeđujemo 'if uvjetu' koji navodi ako je vrijednost funkcije create() manja od nule, tada se stvara pogreška da se datoteka mora izraditi. Ako fstat() s parametrima kao što su 'file_descriptor' i 'information' i 'adresa lokacije na kojoj su pohranjene informacije o datoteci' nije jednaka nuli, prikazujemo vraćenu vrijednost fstat() koja je informacija o datoteci . I ispisujemo informacije u obliku atributa, npr. ID uređaja u kojem je datoteka pohranjena, Inode broj uređaja, način zaštite datoteke, ID korisnika, ID grupe i broj poveznice (tvrdi oblik).

Nakon prikaza ovih atributa, izlazimo iz naredbi i zatvaramo datoteku koristeći close() metodu. Zatim poništite vezu datoteke pozivom metode unlink().

#include
#include
#include
#include
#uključi

glavni ( ) {
char niz [ ] = 'amp.datoteka' ;
strukturirati stat informacije ;
int deskriptor datoteke ;
ako ( ( deskriptor datoteke = napravio ( niz , S_IWUSR ) ) < 0 )
užas ( 'creat() greška' ) ;
drugo {
ako ( država ( deskriptor datoteke , i informacija ) != 0 )
užas ( 'pogreška fstat()' ) ;
drugo {
stavlja ( 'fstat() vrijednosti:' ) ;
printf ( ' inod: %d \n ' , ( int ) info. st_ino ) ;
printf ( ' device_id: %d \n ' , ( int ) info. st_dev ) ;
printf ( ' način rada uređaja: %08x \n ' , info. st_mode ) ;
printf ( ' no_of_hard_links: %d \n ' , info. st_nlink ) ;
printf ( ' u_id: %d \n ' , ( int ) info. st_uid ) ;
printf ( ' g_id: %d \n ' , ( int ) info. st_gid ) ;
}
Zatvoriti ( deskriptor datoteke ) ;
prekinuti vezu ( niz ) ;
}
}

Program će najprije pristupiti dopuštenju za rad s datotekom, a zatim će pročitati podatke u njoj i zapisati ih na dodijeljeno mjesto u memoriji. Atributi koje smo dali programu za prikaz iz datoteke prikazani su u izlazu.

Zaključak

Koristili smo funkciju fstat() za pristup informacijama o datoteci. Najprije smo naučili sintaksu za funkciju fstat() objašnjenu s potpunim opisom parametara funkcije. Zatim smo napisali program za ovu funkciju gdje smo prvo pristupili dopuštenju našeg vlasnika datoteke, a zatim pročitali datoteku i prikazali atribute koje smo željeli iz informacija o datoteci. Dali smo sve od sebe da vam omogućimo da razumijete koncept fstat() i nadamo se da će vam pomoći u vašim programima.