Fstat-funktion i C

Fstat Funktion I C



Funktionen fstat() kalder systemet for at returnere informationen (om en fil), der afhænger af beskrivelsen af ​​den pågældende fil. Denne funktion henter informationen for den fil, der er knyttet til filbeskrivelsen, også kendt som 'fildes', og skriver derefter denne information i den hukommelsesplacering, hvor bufferen peger på. Returtypen for denne funktion er et heltal. Det returnerer '0'-værdien, hvis programmet udføres med succes. Ellers returnerer den en '-1' til funktionen i tilfælde af mislykket udførelse. Udførelsesfejlen for denne funktion kan skyldes nogle specifikke årsager, såsom hvis filderne i funktionen har en ugyldig deskriptor for filen, hvis læsefejlen for input og output opstår fra filen, og hvis hukommelsesplaceringen (strukturen) hvor bufferen peger på at skrive filinformationen har ikke nok allokeret hukommelse til filstørrelsen.

Procedure

Denne artikel følger den sekventielle rækkefølge for at implementere funktionen fstat() for at få filoplysningerne. Vi lærer først syntaksen for denne funktion, de parametre, der kræves til denne funktion. Derefter bruger vi denne syntaks til at udføre nogle eksempler for fstat()-funktionen.







Syntaks

Metoden til at erklære fstat()-funktionen, som giver programmet adgang til filoplysningerne, er nævnt i følgende linje:



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

Hver gang vi skal kalde funktionen i vores program, skal vi først importere header-filerne, der understøtter denne funktion som 'sys/stat.h'. Returtypen for funktionen er altid 'int', og parameteren inkluderer 'fildes' med datatypen 'int'. Fildes er en deskriptor for den fil, som vi ønsker at vide informationen om. En anden parameter, der er givet til funktionen, er pointeren 'buf'. Det er en 'struct stat' pointer, der peger mod den struktur, hvor vi ønsker at gemme dataene om filen. Dette er en kort beskrivelse af inputparametrene for fstat()-funktionen.



Eksempel

Vi bruger den tidligere nævnte beskrivelse og eksekverer et program for at få information om enhver/specifik fil gennem vores program. Vi skriver dette program i Microsoft Visual Studio C-kompileren til udførelsen. Vi starter med eksemplet ved først at oprette et projekt og derefter tilføje det til C-lagrene i Visual Studio. For at tilføje projektet til C-filerne inkluderer vi '.c' med projektnavnet og tilføjer det til projektets kildefil. Næste trin efter oprettelsen af ​​projektet er at kalde alle de nødvendige biblioteker til de funktioner, som vi kan bruge senere i programmet. Da vi implementerer eksemplet for fstat()-funktionen i denne artikel, er vi nødt til at inkludere header-filen 'sys/ stat.h '. For at få filoplysningerne skal vi kende den enhedstype, hvor filen findes. For at kende datatypen for enheden inkluderer vi overskriften 'type. h” i programmet.





Filoplysningerne skal indeholde tidspunktet for, hvornår filen sidst blev åbnet, og den ændring, der blev foretaget i den. For at få adgang til disse tidskaldsfunktioner tilføjer vi overskriftsfilen 'times. h' og 'fcntl. h' header for filtilladelsesfunktionerne. Den sidste overskrift 'stdio. h”-filen er også inkluderet i programmet for at kalde printf()- og scanf()-metoderne i programmet. Header-filerne, som vi diskuterede skal inkluderes i programmet, er som følger:

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

Efter at de tidligere nævnte header-filer er blevet importeret til programmet, bygger vi nu programmet for at få information om en specifik fil. Vi erklærer funktionen med returtypen som 'int' med navnet 'main'. I denne hovedfunktion erklærer vi et 'char'-array og tildeler det navnet på den fil, som vi skal kende en information om. Derefter definerer vi en 'statinformation' med datatypen 'struct'. Denne struktur er et sted, hvor vi gemmer oplysningerne om filen.



Derefter definerer vi en anden variabel med navnet 'file_descriptor' med datatypen som 'heltal'. I 'hvis-tilstanden' beder vi om tilladelse til læse- og skriveoperationerne for filen, hvis den eksisterer, og sender 'S_IWUSR' og navnet på arrayet til 'create()'-funktionen, som kræver tilladelserne for filen, hvis den eksisterer, eller opret en ny fil på anden måde. Vi sender denne create()-funktion til 'if condition', som angiver, hvis create()-funktionens værdi er mindre end nul, så opretter en fejl om, at filen skal oprettes. Hvis fstat() med parametre som 'file_descriptor' og 'information' og 'adressen på det sted, hvor filinformationen er gemt' ikke er lig med nul, viser vi den fstat() returnerede værdi, der er informationen i filen . Og vi udskriver oplysningerne i form af attributter, f.eks. enheds-id, hvori filen er gemt, enhedens Inode-nummer, filens beskyttelsestilstand, bruger-id, gruppe-id og nummeret på linket (hard form).

Efter at have vist disse attributter, kommer vi ud af sætningerne og lukker filen ved hjælp af close() metoden. Fjern derefter linket til filen ved at kalde unlink()-metoden.

#include
#include
#include
#include
#include

vigtigste ( ) {
char array [ ] = 'amp.fil' ;
struktur statistiske oplysninger ;
int filbeskrivelse ;
hvis ( ( filbeskrivelse = lavet ( array , S_IWUSR ) ) < 0 )
fejl ( 'creat() fejl' ) ;
andet {
hvis ( stat ( filbeskrivelse , & Information ) != 0 )
fejl ( 'fstat() fejl' ) ;
andet {
sætter ( 'fstat() værdier:' ) ;
printf ( ' inode: %d \n ' , ( int ) info. st_ino ) ;
printf ( ' device_id: %d \n ' , ( int ) info. st_dev ) ;
printf ( ' enhedstilstand: %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 ) ;
}
tæt ( filbeskrivelse ) ;
fjerne linket ( array ) ;
}
}

Programmet vil først få adgang til tilladelsen til filhandlingen og derefter læse dataene i det og skrive det i den tildelte hukommelsesplacering. De attributter, som vi gav programmet til at vise fra filen, vises i outputtet.

Konklusion

Vi brugte fstat()-funktionen til at få adgang til filoplysningerne. Vi lærte først syntaksen for fstat()-funktionen forklaret med den komplette beskrivelse af parametrene for funktionen. Derefter skrev vi et program til denne funktion, hvor vi først fik adgang til vores filejers tilladelse og derefter læste filen og viste de attributter, som vi ønskede fra filens information. Vi gjorde vores bedste for at lade dig forstå konceptet fstat(), og vi håber, at det vil hjælpe dig i dine programmer.