Fstat funkcija C

Fstat Funkcija C



Fstat() funkcija izsauc sistēmu, lai atgrieztu informāciju (attiecībā uz kādu failu), kas ir atkarīga no šī faila deskriptora. Šī funkcija iegūst informāciju par failu, kas ir saistīts ar faila deskriptoru, kas pazīstams arī kā “fildes”, un pēc tam ieraksta šo informāciju atmiņas vietā, uz kuru norāda buferis. Šīs funkcijas atgriešanas veids ir vesels skaitlis. Ja programma tiek veiksmīgi izpildīta, tā atgriež vērtību “0”. Pretējā gadījumā tas atgriež funkcijai “-1” neveiksmīgas izpildes gadījumā. Šīs funkcijas izpildes kļūdu var izraisīt daži īpaši iemesli, piemēram, ja funkcijas failiem ir nederīgs faila deskriptors, ja ievades un izvades lasīšanas kļūda rodas no faila un ja atmiņas vieta (struktūra), kur buferis norāda uz faila informācijas rakstīšanu, nav pietiekami daudz atmiņas faila izmēram.

Procedūra

Šajā rakstā ir ievērota secība, lai ieviestu funkciju fstat(), lai iegūtu informāciju par failu. Vispirms apgūstam šīs funkcijas sintaksi, šai funkcijai nepieciešamos parametrus. Pēc tam mēs izmantojam šo sintaksi, lai izpildītu dažus funkcijas fstat () piemērus.







Sintakse

Fstat() funkcijas deklarēšanas metode, kas nodrošina programmas piekļuvi faila informācijai, ir minēta šajā rindā:



$ #include
$ starpt Valsts ( starpt fildes , struktūra stat * buf ) ;

Ikreiz, kad mums ir jāizsauc funkcija mūsu programmā, mums vispirms ir jāimportē galvenes faili, kas atbalsta šo funkciju kā “sys/ stat.h”. Funkcijas atgriešanas veids vienmēr ir “int”, un parametrs ietver “fildes” ar datu tipu “int”. Fildes ir faila deskriptors, par kuru mēs vēlamies uzzināt informāciju. Vēl viens parametrs, kas tiek piešķirts funkcijai, ir rādītājs “buf”. Tas ir “struct stat” rādītājs, kas norāda uz struktūru, kurā vēlamies saglabāt datus par failu. Šis ir īss funkcijas fstat() ievades parametru apraksts.



Piemērs

Mēs izmantojam iepriekš minēto aprakstu un izpildām programmu, lai, izmantojot mūsu programmu, iegūtu informāciju par jebkuru/konkrētu failu. Mēs rakstām šo programmu Microsoft Visual Studio C kompilatorā izpildei. Mēs sākam ar piemēru, vispirms izveidojot projektu un pēc tam pievienojot to C krātuvēm programmā Visual Studio. Lai projektu pievienotu C failiem, mēs iekļaujam “.c” ar projekta nosaukumu un pievienojam to projekta avota failam. Nākamais solis pēc projekta izveides ir visu nepieciešamo bibliotēku izsaukšana funkcijām, kuras mēs varam izmantot vēlāk programmā. Tā kā šajā rakstā mēs ieviešam funkcijas fstat() piemēru, mums ir jāiekļauj galvenes fails “sys/ stat.h”. Lai iegūtu informāciju par failu, mums ir jāzina ierīces tips, kurā fails pastāv. Lai uzzinātu ierīces datu tipu, mēs iekļaujam galveni “tips. h” programmā.





Faila informācijā jāiekļauj laiks, kad fails pēdējo reizi tika atvērts, un tajā veiktās izmaiņas. Lai piekļūtu šīm laika izsaukšanas funkcijām, mēs pievienojam galvenes failu “times. h” un “fcntl. h” galveni faila atļauju funkcijām. Pēdējā galvene “stdio. h” fails ir iekļauts arī programmā, lai programmā izsauktu printf() un scanf() metodes. Galvenes faili, kurus mēs apspriedām, lai iekļautu programmā, ir šādi:

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

Kad iepriekš minētie galvenes faili ir veiksmīgi importēti programmā, mēs tagad veidojam programmu, lai iegūtu informāciju par konkrētu failu. Mēs deklarējam funkciju, kuras atgriešanas veids ir “int” ar nosaukumu “main”. Šajā galvenajā funkcijā mēs deklarējam “char” masīvu un piešķiram tam faila nosaukumu, par kuru mums ir jāzina informācija. Pēc tam mēs definējam “stat information” ar datu tipu “struct”. Šī struktūra ir vieta, kur mēs glabājam informāciju par failu.



Pēc tam mēs definējam citu mainīgo ar nosaukumu “file_descriptor” ar datu tipu “integer”. Stāvoklī “ja” mēs lūdzam atļauju faila lasīšanas un rakstīšanas operācijām, ja tāds pastāv, nododot “S_IWUSR” un masīva nosaukumu funkcijai “create()”, kas pieprasa atļaujas failam, ja tas pastāv vai citādi izveidojiet jaunu failu. Mēs nododam šo funkciju create() nosacījumam “ja”, kas norāda, ja funkcijas create() vērtība ir mazāka par nulli, tad tiek radīta kļūda, ka fails ir jāizveido. Ja fstat () ar parametriem 'file_descriptor' un 'information' un 'vietas adrese, kur tiek glabāta faila informācija' nav vienāds ar nulli, mēs parādām fstat () atgriezto vērtību, kas ir faila informācija. . Un informāciju izdrukājam atribūtu veidā, piem. ierīces ID, kurā fails tiek glabāts, ierīces Inode numurs, faila aizsardzības režīms, lietotāja ID, grupas ID un saites numurs (cietā formā).

Pēc šo atribūtu parādīšanas mēs izejam no priekšrakstiem un aizveram failu, izmantojot close() metodi. Pēc tam atsaistiet failu, izsaucot unlink() metodi.

#include
#include
#include
#include
#include

galvenais ( ) {
char masīvs [ ] = 'amp.fails' ;
struktūra statistikas informācija ;
starpt faila deskriptors ;
ja ( ( faila deskriptors = izgatavots ( masīvs , S_IWUSR ) ) < 0 )
kļūda ( 'creat() error' ) ;
cits {
ja ( Valsts ( faila deskriptors , & informāciju ) != 0 )
kļūda ( 'fstat() kļūda' ) ;
cits {
liek ( 'fstat() vērtības:' ) ;
printf ( ' inode: %d \n ' , ( starpt ) info. st_ino ) ;
printf ( ' device_id: %d \n ' , ( starpt ) info. st_dev ) ;
printf ( ' ierīces režīms: %08x \n ' , info. st_mode ) ;
printf ( ' no_of_hard_links: %d \n ' , info. st_nlink ) ;
printf ( ' u_id: %d \n ' , ( starpt ) info. st_uid ) ;
printf ( ' g_id: %d \n ' , ( starpt ) info. st_gid ) ;
}
aizveriet ( faila deskriptors ) ;
atsaistīt ( masīvs ) ;
}
}

Programma vispirms piekļūs faila darbības atļaujai un pēc tam nolasa tajā esošos datus un ierakstīs tos piešķirtajā atmiņas vietā. Atribūti, kurus mēs norādījām programmai, lai tā tiktu parādīta no faila, tiek parādīti izvadē.

Secinājums

Lai piekļūtu faila informācijai, mēs izmantojām funkciju fstat (). Vispirms mēs uzzinājām funkcijas fstat () sintaksi, kas izskaidrota ar pilnu funkcijas parametru aprakstu. Pēc tam mēs uzrakstījām programmu šai funkcijai, kur vispirms piekļuvām mūsu faila īpašnieka atļaujai un pēc tam lasījām failu un parādījām atribūtus, ko vēlējāmies no faila informācijas. Mēs centāmies visu iespējamo, lai ļautu jums saprast fstat() jēdzienu, un ceram, ka tas jums palīdzēs jūsu programmās.