Funkcija Fstat v C

Funkcija Fstat V C



Funkcija fstat() pokliče sistem, da vrne informacije (glede neke datoteke), ki so odvisne od deskriptorja te datoteke. Ta funkcija pridobi informacije za datoteko, ki je povezana z deskriptorjem datoteke, znanim tudi kot »fildes«, in nato zapiše te informacije na pomnilniško mesto, kamor kaže medpomnilnik. Vrnjeni tip te funkcije je celo število. Če je program uspešno izveden, vrne vrednost '0'. V nasprotnem primeru vrne funkciji »-1« v primeru neuspele izvedbe. Napaka pri izvajanju te funkcije je lahko posledica nekaterih posebnih razlogov, na primer, če imajo polja funkcije neveljaven deskriptor za datoteko, če pride do napake pri branju za vhod in izhod iz datoteke in če je pomnilniška lokacija (struktura), kjer medpomnilnik kaže na pisanje informacij o datoteki, nima dovolj dodeljenega pomnilnika za velikost datoteke.

Postopek

Ta članek sledi zaporednemu vrstnemu redu za implementacijo funkcije fstat() za pridobivanje informacij o datoteki. Najprej se naučimo sintakse za to funkcijo, parametre, potrebne za to funkcijo. Nato uporabimo to sintakso za izvedbo nekaj primerov za funkcijo fstat().







Sintaksa

Metoda za deklaracijo funkcije fstat(), ki omogoča dostop programa do informacij o datoteki, je omenjena v naslednji vrstici:



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

Kadarkoli moramo poklicati funkcijo v našem programu, moramo najprej uvoziti datoteke glave, ki podpirajo to funkcijo kot 'sys/stat.h'. Tip vrnitve za funkcijo je vedno »int«, parameter pa vključuje »fildes« s podatkovnim tipom »int«. Fildes je deskriptor datoteke, o kateri želimo vedeti informacije. Drug parameter, ki je podan funkciji, je kazalec 'buf'. To je kazalec 'struct stat', ki kaže na strukturo, kamor želimo shraniti podatke o datoteki. To je kratek opis vhodnih parametrov za funkcijo fstat().



Primer

Uporabljamo prej omenjeni opis in izvajamo program za pridobitev informacij o kateri koli / določeni datoteki prek našega programa. Ta program napišemo v prevajalnik Microsoft Visual Studio C za izvedbo. S primerom začnemo tako, da najprej ustvarimo projekt in ga nato dodamo v repozitorije C v Visual Studio. Če želite dodati projekt v datoteke C, vključimo ».c« z imenom projekta in ga dodamo v izvorno datoteko projekta. Naslednji korak po izdelavi projekta je priklic vseh zahtevanih knjižnic za funkcije, ki jih bomo morda kasneje uporabili v programu. Ker v tem članku izvajamo primer za funkcijo fstat(), moramo vključiti datoteko glave »sys/stat.h«. Za informacije o datoteki moramo poznati vrsto naprave, v kateri je datoteka. Če želite vedeti vrsto podatkov za napravo, vključimo glavo »type. h” v programu.





Podatki o datoteki morajo vsebovati čas, ko je bila datoteka nazadnje odprta, in spremembo, ki je bila v njej narejena. Za dostop do teh funkcij za klicanje časa dodamo datoteko glave »times. h« in »fcntl. h« za funkcije dovoljenj za datoteke. Zadnji naslov »stdio. h” je v program vključena tudi datoteka za klicanje metod printf() in scanf() v programu. Glavne datoteke, o katerih smo razpravljali, da bi jih vključili v program, so naslednje:

$ #include
$ #include
$ #include
$ #include
$ #include

Ko so prej omenjene datoteke glave uspešno uvožene v program, zdaj zgradimo program za pridobivanje informacij o določeni datoteki. Funkcijo, ki ima povratni tip, deklariramo kot 'int' z imenom 'main'. V tej glavni funkciji deklariramo matriko »char« in ji dodelimo ime datoteke, za katero moramo poznati informacije. Nato definiramo 'statistične informacije' s podatkovnim tipom 'struct'. Ta struktura je mesto, kjer shranjujemo informacije o datoteki.



Nato definiramo drugo spremenljivko z imenom 'file_descriptor' s podatkovnim tipom 'integer'. V pogoju »if« zahtevamo dovoljenje za operacije branja in pisanja za datoteko, če obstaja, pri čemer posredujemo »S_IWUSR« in ime matrike funkciji »create()«, ki pokliče dovoljenja za datoteko, če obstaja ali sicer ustvarite novo datoteko. To funkcijo create() posredujemo »if pogoju«, ki pove, če je vrednost funkcije create() manjša od nič, nato ustvari napako, da je treba datoteko ustvariti. Če funkcija fstat() s parametri kot sta »file_descriptor« in »information« ter »naslov lokacije, kjer so shranjene informacije o datoteki« ni enaka nič, prikažemo vrnjeno vrednost fstat(), ki je informacija o datoteki . In podatke natisnemo v obliki atributov, npr. id naprave, v kateri je datoteka shranjena, številka Inode naprave, način zaščite datoteke, id uporabnika, id skupine in številka povezave (trda oblika).

Po prikazu teh atributov pridemo iz stavkov in zapremo datoteko z uporabo metode close(). Nato odstranite povezavo datoteke s klicem metode unlink().

#include
#include
#include
#include
#include

glavni ( ) {
char niz [ ] = 'amp.file' ;
struct stat informacije ;
int filedescriptor ;
če ( ( filedescriptor = narejeno ( niz , S_IWUSR ) ) < 0 )
groza ( 'napaka create()' ) ;
drugače {
če ( država ( filedescriptor , & informacije ) != 0 )
groza ( 'napaka fstat()' ) ;
drugače {
postavlja ( 'vrednosti fstat():' ) ;
printf ( ' inode: %d \n ' , ( int ) info. st_ino ) ;
printf ( ' device_id: %d \n ' , ( int ) info. st_dev ) ;
printf ( ' način naprave: %08x \n ' , info. st_mode ) ;
printf ( ' št_trdih_povezav: %d \n ' , info. st_nlink ) ;
printf ( ' u_id: %d \n ' , ( int ) info. st_uid ) ;
printf ( ' g_id: %d \n ' , ( int ) info. st_gid ) ;
}
blizu ( filedescriptor ) ;
prekiniti povezavo ( niz ) ;
}
}

Program najprej dostopa do dovoljenja za delovanje datoteke, nato pa prebere podatke v njej in jih zapiše na dodeljeno pomnilniško mesto. Atributi, ki smo jih dali programu za prikaz iz datoteke, so prikazani v izhodu.

Zaključek

Za dostop do informacij o datoteki smo uporabili funkcijo fstat(). Najprej smo se naučili sintakso za funkcijo fstat(), razloženo s popolnim opisom parametrov funkcije. Nato smo napisali program za to funkcijo, kjer smo najprej dostopali do dovoljenja lastnika datoteke in nato prebrali datoteko ter prikazali atribute, ki smo jih želeli iz informacij datoteke. Trudili smo se, da bi vam omogočili razumevanje koncepta fstat() in upamo, da vam bo pomagal pri vaših programih.