Fstat -funksjonen i C

Fstat -funksjonen i C

FSTAT () -funksjonen kaller systemet for å returnere informasjonen (angående noen filer) som avhenger av beskrivelsen til den filen. Denne funksjonen innhenter informasjonen for filen som er tilknyttet filbeskrivelsen også kjent som "Fildes" og skriver deretter denne informasjonen på minneplassen der bufferen peker på. Returtypen til denne funksjonen er et heltall. Den returnerer “0” -verdien hvis programmet blir utført med hell. Ellers returnerer den en "-1" til funksjonen i tilfelle mislykket utførelse. Utførelsesfeilen for denne funksjonen kan skyldes noen spesifikke årsaker som om filensens smild har en ugyldig beskrivelse for filen, hvis lesefeilen for inngang og utgang oppstår fra filen, og hvis minnestedet (strukturen) der hvor Bufferen peker på å skrive filinformasjonen har ikke nok tildelt minne for filstørrelsen.

Fremgangsmåte

Denne artikkelen følger den sekvensielle rekkefølgen for å implementere FSTAT () -funksjonen for å få filinformasjonen. Vi lærer først syntaks for denne funksjonen, parametrene som kreves for denne funksjonen. Deretter bruker vi denne syntaksen for å utføre noen eksempler for FSTAT () -funksjonen.

Syntaks

Metoden for å erklære FSTAT () -funksjonen som muliggjør tilgang til programmet til filinformasjonen er nevnt på følgende linje:

$#inkluderer
$ int fStat (int Fildes, struct Stat *buf);

Hver gang vi må ringe funksjonen i programmet vårt, må vi importere overskriftsfilene først som støtter denne funksjonen som “SYS/ STAT.h ”. Returtypen for funksjonen er alltid "int", og parameteren inkluderer "Fildes" med datatypen "Int". Fildes er en deskriptor for filen som vi vil vite informasjonen om. En annen parameter som er gitt til funksjonen er pekeren “buf”. Det er en "struct stat" -peker som peker mot strukturen der vi ønsker å lagre dataene om filen. Dette er en kort beskrivelse av inngangsparametrene for FSTAT () -funksjonen.

Eksempel

Vi bruker den gjennomtrengende nevnte beskrivelsen og utfører et program for å få informasjonen om enhver / spesifikk fil gjennom programmet vårt. Vi skriver dette programmet i Microsoft Visual Studio C -kompilator for utførelsen. Vi starter med eksemplet med å lage et prosjekt først og deretter legge det til C -depotene i Visual Studio. For å legge prosjektet til C -filene inkluderer vi “.C ”med prosjektnavnet og legg det til i kildefilen til prosjektet. Neste trinn etter opprettelsen av prosjektet er å ringe alle nødvendige biblioteker for funksjonene som vi kan bruke senere i programmet. Siden vi implementerer eksemplet for FSTAT () -funksjonen i denne artikkelen, må vi inkludere overskriftsfilen “SYS/ Stat.h “. For filinformasjonen må vi vite enhetstypen der filen eksisterer. For å kjenne datatypen for enheten, inkluderer vi overskriften “Type. H ”i programmet.

Filinformasjonen må inneholde tiden da filen ble åpnet sist og modifiseringen som ble gjort i den. For å få tilgang til disse tidsanropsfunksjonene, legger vi til overskriftsfilen “Times. h ”og“ fcntl. h ”header for filtillatelsefunksjonene. Den siste overskriften “stdio. H ”-filen er også inkludert i programmet for å ringe Printf () og Scanf () -metodene i programmet. Overskriftsfilene som vi diskuterte for å bli inkludert i programmet er som følger:

$#inkluderer
$#inkluderer
$#inkluderer
$#inkluderer
$#inkluderer

Etter at de tidligere nevnte overskriftsfilene er importert til programmet, bygger vi nå programmet for å få informasjonen om en bestemt fil. Vi erklærer at funksjonen har returtypen som "int" med navnet "Main". I denne hovedfunksjonen erklærer vi en "røye" -matrise og tildeler den navnet på filen som vi trenger å vite en informasjon for. Deretter definerer vi en "statsinformasjon" med datatypen "struct". Denne strukturen er et sted hvor vi lagrer informasjonen om filen.

Deretter definerer vi en annen variabel med navnet "File_Descriptor" med datatypen som "Heltall". I "Hvis tilstand", ber vi om tillatelse til lese- og skriveoperasjoner for filen hvis den eksisterer, og passerer "s_iwusr" og navnet på matrisen til "create ()" -funksjonen som krever tillatelser for filen hvis den eksisterer eller oppretter en ny fil ellers. Vi gir denne create () -funksjonen til "hvis tilstand" som sier om CREATE () funksjonsverdien er mindre enn null, oppretter en feil som filen må opprettes. Hvis fstat () med parametere som "file_descriptor" og "informasjon" og "adressen til stedet der filinformasjonen er lagret" ikke lik null, viser vi fstat () returnert verdi som er informasjonen til filen. Og vi skriver ut informasjonen i form av attributter, e.g. Enhets -ID som filen er lagret i, inodenummeret til enheten, beskyttelsesmodus for filen, bruker -ID, gruppe -ID og nummeret på lenken (hard skjema).

Etter å ha vist disse attributtene, kommer vi ut av utsagnene og lukker filen ved hjelp av close () -metoden. Unlink filen ved å kalle unlink () -metoden.

#inkludere
#inkludere
#inkludere
#inkludere
#inkludere
main ()
char array [] = "amp.fil";
struct statsinformasjon;
int Filedescriptor;
if ((Filedescriptor = create (array, s_iwusr)) < 0)
perror ("creat () feil");
annet
if (fstat (Filedescriptor, & Information) != 0)
Perror ("fStat () feil");
annet
Puts ("fStat () Values:");
printf ("inode: %d \ n", (int) info.st_ino);
printf ("enhet_id: %d \ n", (int) info.st_dev);
printf ("enhetsmodus: %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);

Lukk (Filedescriptor);
unlink (matrise);

Programmet får først tilgang til tillatelsen for filoperasjonen og leser deretter dataene i den og skriver dem på det tildelte minneplassen. Attributtene som vi ga programmet som vises fra filen, vises i utdataene.

Konklusjon

Vi brukte fstat () -funksjonen for å få tilgang til filinformasjonen. Vi lærte først syntaks for FSTAT () -funksjonen forklart med den komplette beskrivelsen av parametrene til funksjonen. Deretter skrev vi et program for denne funksjonen der vi først fikk tilgang til fileierens tillatelse og deretter leste filen og viste attributtene vi ønsket fra filens informasjon. Vi prøvde vårt beste for å la deg forstå begrepet fstat (), og vi håper at det vil hjelpe deg i programmene dine.