Fstat-funksjon i C

Fstat Funksjon I C



Funksjonen fstat() kaller systemet for å returnere informasjonen (angående en fil) som avhenger av beskrivelsen til den filen. Denne funksjonen henter informasjonen for filen som er assosiert med filbeskrivelsen, også kjent som 'fildes', og skriver deretter denne informasjonen i minneplasseringen der bufferen peker til. Returtypen til denne funksjonen er et heltall. Den returnerer '0'-verdien hvis programmet er vellykket utført. Ellers returnerer den en '-1' til funksjonen i tilfelle mislykket kjøring. Utførelsesfeilen for denne funksjonen kan skyldes noen spesifikke årsaker som om filene til funksjonen har en ugyldig deskriptor for filen, hvis lesefeilen for input og output oppstår fra filen, og hvis minneplasseringen (strukturen) der 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 syntaksen for denne funksjonen, parameterne som kreves for denne funksjonen. Deretter bruker vi denne syntaksen til å utføre noen eksempler for fstat()-funksjonen.







Syntaks

Metoden for å erklære fstat()-funksjonen som gir tilgang til programmet til filinformasjonen er nevnt i følgende linje:



$ #include
$ int fstat ( int fildes , struktur stat * buff ) ;

Hver gang vi må kalle opp funksjonen i programmet vårt, må vi først importere headerfilene 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 beskrivelse for filen som vi ønsker å 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 tidligere nevnte beskrivelsen og kjører et program for å få informasjon om en hvilken som helst/spesifikk fil gjennom programmet vårt. Vi skriver dette programmet i Microsoft Visual Studio C-kompilatoren for kjøringen. Vi starter med eksemplet ved å lage et prosjekt først og deretter legge det til C-repositoriene i Visual Studio. For å legge prosjektet til C-filene inkluderer vi '.c' med prosjektnavnet og legger det til i kildefilen til prosjektet. Neste trinn etter opprettelsen av prosjektet er å kalle alle nødvendige biblioteker for funksjonene som vi kan bruke senere i programmet. Siden vi implementerer eksempelet for fstat()-funksjonen i denne artikkelen, må vi inkludere overskriftsfilen 'sys/ stat.h '. For filinformasjonen må vi vite enhetstypen der filen finnes. For å vite datatypen for enheten inkluderer vi overskriften 'type. h' i programmet.





Filinformasjonen må inkludere tidspunktet da filen sist ble åpnet og endringen som ble gjort i den. For å få tilgang til disse tidsanropsfunksjonene legger vi til overskriftsfilen 'times. h' og 'fcntl. h' header for filtillatelsesfunksjonene. Den siste overskriften 'stdio. h”-filen er også inkludert i programmet for å kalle printf()- og scanf()-metodene i programmet. Overskriftsfilene som vi diskuterte skal inkluderes i programmet er som følger:

$ #include
$ #include
$ #include
$ #include
$ #inkluder

Etter at de tidligere nevnte headerfilene er vellykket importert til programmet, bygger vi nå programmet for å få informasjon om en bestemt fil. Vi erklærer funksjonen med returtypen som 'int' med navnet 'main'. I denne hovedfunksjonen erklærer vi en 'char'-array og tildeler den navnet på filen som vi trenger å vite informasjon om. Deretter definerer vi en 'statinformasjon' 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-tilstanden' ber vi om tillatelse til lese- og skriveoperasjonene for filen hvis den eksisterer, og sender 'S_IWUSR' og navnet på matrisen til 'create()'-funksjonen som krever tillatelsene for filen hvis den eksisterer eller opprett en ny fil på annen måte. Vi sender denne create()-funksjonen til 'if condition' som angir at create()-funksjonsverdien er mindre enn null, og skaper en feil om at filen må opprettes. Hvis fstat() med parametere som 'file_descriptor' og 'informasjon' og 'adressen til stedet der filinformasjonen er lagret' ikke er lik null, viser vi fstat() returnerte verdi som er informasjonen til filen . Og vi skriver ut informasjonen i form av attributter, f.eks. enhets-ID som filen er lagret i, Inode-nummeret til enheten, beskyttelsesmodusen til filen, bruker-IDen, gruppe-IDen og nummeret på lenken (hard form).

Etter å ha vist disse attributtene, kommer vi ut av setningene og lukker filen ved å bruke close()-metoden. Deretter kobler du fra filen ved å kalle unlink()-metoden.

#include
#include
#include
#include
#inkluder

hoved- ( ) {
røye array [ ] = 'amp.file' ;
struktur statinformasjon ;
int filbeskrivelse ;
hvis ( ( filbeskrivelse = laget ( array , S_IWUSR ) ) < 0 )
feil ( 'creat() feil' ) ;
ellers {
hvis ( fstat ( filbeskrivelse , & informasjon ) != 0 )
feil ( 'fstat() feil' ) ;
ellers {
setter ( 'fstat() verdier:' ) ;
printf ( ' inode: %d \n ' , ( int ) info. st_ino ) ;
printf ( ' device_id: %d \n ' , ( int ) info. st_dev ) ;
printf ( ' enhetsmodus: %08x \n ' , info. st_modus ) ;
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 ( filbeskrivelse ) ;
koble fra ( array ) ;
}
}

Programmet vil først få tilgang til tillatelsen for filoperasjonen og deretter lese dataene i den og skrive den i den tildelte minneplasseringen. Attributtene som vi ga programmet til å vise fra filen vises i utdataene.

Konklusjon

Vi brukte fstat()-funksjonen for å få tilgang til filinformasjonen. Vi lærte først syntaksen for fstat()-funksjonen forklart med den fullstendige 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å konseptet fstat() og vi håper at det vil hjelpe deg i programmene dine.