Fstat-funktion i C

Fstat Funktion I C



Funktionen fstat() anropar systemet för att returnera informationen (angående en fil) som beror på filens deskriptor. Den här funktionen hämtar informationen för filen som är associerad med filbeskrivningen även känd som 'fildes' och skriver sedan denna information i minnesplatsen där bufferten pekar på. Returtypen för denna funktion är ett heltal. Den returnerar värdet '0' om programmet körs framgångsrikt. Annars returnerar den en '-1' till funktionen i händelse av misslyckad exekvering. Exekveringsfelet för den här funktionen kan bero på vissa specifika orsaker som om filfilerna för funktionen har en ogiltig deskriptor för filen, om läsfelet för inmatning och utdata uppstår från filen, och om minnesplatsen (strukturen) där bufferten pekar på att skriva filinformationen har inte tillräckligt tilldelat minne för filstorleken.

Procedur

Den här artikeln följer den sekventiella ordningen för att implementera fstat()-funktionen för att hämta filinformationen. Vi lär oss först syntaxen för denna funktion, de parametrar som krävs för denna funktion. Sedan använder vi den här syntaxen för att exekvera några exempel för funktionen fstat().







Syntax

Metoden för att deklarera funktionen fstat() som möjliggör åtkomst av programmet till filinformationen nämns på följande rad:



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

När vi måste anropa funktionen i vårt program måste vi först importera headerfilerna som stöder denna funktion som 'sys/stat.h'. Returtypen för funktionen är alltid 'int' och parametern inkluderar 'fildes' med datatypen 'int'. Fildes är en deskriptor för filen som vi vill veta informationen om. En annan parameter som ges till funktionen är pekaren 'buf'. Det är en 'struct stat'-pekare som pekar mot strukturen där vi vill lagra data om filen. Detta är en kort beskrivning av ingångsparametrarna för fstat()-funktionen.



Exempel

Vi använder den tidigare nämnda beskrivningen och kör ett program för att få information om någon/specifik fil genom vårt program. Vi skriver detta program i Microsoft Visual Studio C-kompilatorn för exekvering. Vi börjar med exemplet genom att först skapa ett projekt och sedan lägga till det i C-förråden i Visual Studio. För att lägga till projektet i C-filerna inkluderar vi '.c' med projektnamnet och lägger till det i projektets källfil. Nästa steg efter skapandet av projektet är att anropa alla nödvändiga bibliotek för de funktioner som vi kan använda senare i programmet. Eftersom vi implementerar exemplet för funktionen fstat() i den här artikeln måste vi inkludera rubrikfilen 'sys/ stat.h '. För filinformationen behöver vi veta vilken enhetstyp där filen finns. För att känna till datatypen för enheten inkluderar vi rubriken 'typ. h” i programmet.





Filinformationen måste innehålla den tidpunkt då filen senast öppnades och den ändring som gjordes i den. För att komma åt dessa tidsanropsfunktioner lägger vi till rubrikfilen 'times. h' och 'fcntl. h'-huvudet för filbehörighetsfunktionerna. Den sista rubriken 'stdio. h”-filen ingår också i programmet för att anropa metoderna printf() och scanf() i programmet. Rubrikfilerna som vi diskuterade ska inkluderas i programmet är följande:

$ #include
$ #include
$ #include
$ #include
$ #inkludera

Efter att de tidigare nämnda header-filerna framgångsrikt har importerats till programmet, bygger vi nu programmet för att få information om en specifik fil. Vi deklarerar funktionen med returtypen som 'int' med namnet 'main'. I denna huvudfunktion deklarerar vi en 'char'-array och tilldelar den namnet på filen som vi behöver veta en information om. Sedan definierar vi en 'statinformation' med datatypen 'struct'. Denna struktur är en plats där vi lagrar informationen om filen.



Sedan definierar vi en annan variabel med namnet 'file_descriptor' med datatypen som 'heltal'. I 'if-villkoret' ber vi om tillåtelse för läs- och skrivoperationerna för filen om den finns, och skickar 'S_IWUSR' och namnet på arrayen till funktionen 'create()' som kräver behörigheterna för filen om den finns eller skapa en ny fil på annat sätt. Vi skickar denna create()-funktion till 'if condition' som anger om create()-funktionens värde är mindre än noll och skapar då ett fel att filen måste skapas. Om fstat() med parametrar som 'file_descriptor' och 'information' och 'adressen till platsen där filinformationen är lagrad' inte är lika med noll, visar vi fstat() returnerade värde som är informationen i filen . Och vi skriver ut informationen i form av attribut, t.ex. enhets-id där filen är lagrad, enhetens inodnummer, filens skyddsläge, användar-id, grupp-id och länkens nummer (hård form).

Efter att ha visat dessa attribut kommer vi ut ur satserna och stänger filen med metoden close(). Ta sedan bort länken till filen genom att anropa unlink()-metoden.

#include
#include
#include
#include
#inkludera

huvud ( ) {
röding array [ ] = 'amp.fil' ;
struktur statistisk information ;
int filbeskrivning ;
om ( ( filbeskrivning = gjord ( array , S_IWUSR ) ) < 0 )
fel ( 'creat() error' ) ;
annan {
om ( stat ( filbeskrivning , & information ) != 0 )
fel ( 'fstat() fel' ) ;
annan {
sätter ( 'fstat() värden:' ) ;
printf ( ' inode: %d \n ' , ( int ) info. st_ino ) ;
printf ( ' device_id: %d \n ' , ( int ) info. st_dev ) ;
printf ( ' enhetsläge: %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 ) ;
}
stänga ( filbeskrivning ) ;
ta bort länken ( array ) ;
}
}

Programmet kommer först åt tillståndet för filoperationen och läser sedan data i den och skriver den i den tilldelade minnesplatsen. Attributen som vi gav programmet att visa från filen visas i utdata.

Slutsats

Vi använde funktionen fstat() för att komma åt filinformationen. Vi lärde oss först syntaxen för funktionen fstat() förklarad med den fullständiga beskrivningen av funktionens parametrar. Sedan skrev vi ett program för den här funktionen där vi först fick åtkomst till vår filägares tillstånd och sedan läste filen och visade de attribut som vi ville ha från filens information. Vi gjorde vårt bästa för att låta dig förstå konceptet fstat() och vi hoppas att det skulle hjälpa dig i dina program.