Fstat funktsioon C-s

Fstat Funktsioon C S



Funktsioon fstat() kutsub süsteemi tagasi teabe (mõne faili kohta), mis sõltub selle faili deskriptorist. See funktsioon hangib teabe faili kohta, mis on seotud failideskriptoriga, mida tuntakse ka kui 'fildes', ja kirjutab seejärel selle teabe mälukohta, kuhu puhver osutab. Selle funktsiooni tagastustüüp on täisarv. Kui programm on edukalt käivitatud, tagastab see väärtuse '0'. Vastasel juhul tagastab see ebaõnnestunud täitmise korral funktsioonile väärtuse '-1'. Selle funktsiooni täitmisviga võib olla tingitud mõnest konkreetsest põhjusest, näiteks kui funktsiooni failides on faili jaoks vale deskriptor, kui sisendi ja väljundi lugemisviga ilmneb failist ja kui mälu asukoht (struktuur), kus puhver osutab failiteabe kirjutamisele, ei ole faili suuruse jaoks piisavalt eraldatud mälu.

Menetlus

See artikkel järgib failiteabe hankimiseks funktsiooni fstat() rakendamise järjestikust järjekorda. Kõigepealt õpime selle funktsiooni süntaksi, selle funktsiooni jaoks vajalikke parameetreid. Seejärel kasutame seda süntaksit funktsiooni fstat() näidete täitmiseks.







Süntaks

Funktsiooni fstat() deklareerimise meetod, mis võimaldab programmil juurdepääsu failiteabele, on mainitud järgmisel real:



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

Iga kord, kui peame oma programmis funktsiooni kutsuma, peame esmalt importima päisefailid, mis seda funktsiooni toetavad kui 'sys/ stat.h'. Funktsiooni tagastustüüp on alati 'int' ja parameeter sisaldab 'fildes' andmetüübiga 'int'. Fildes on faili deskriptor, mille kohta soovime teavet saada. Veel üks funktsioonile antud parameeter on osuti “buf”. See on 'struct stat' osuti, mis osutab struktuurile, kuhu tahame faili andmed salvestada. See on funktsiooni fstat() sisendparameetrite lühikirjeldus.



Näide

Kasutame eelnevalt mainitud kirjeldust ja käivitame programmi, et saada teavet mis tahes/konkreetse faili kohta meie programmi kaudu. Kirjutame selle programmi täitmiseks Microsoft Visual Studio C kompilaatorisse. Alustame näitega, luues esmalt projekti ja seejärel lisades selle Visual Studio C-hoidlatesse. Projekti lisamiseks C-failidesse lisame projekti nimega '.c' ja lisame selle projekti lähtefaili. Järgmine samm pärast projekti loomist on kõigi funktsioonide jaoks vajalike teekide väljakutsumine, mida võime hiljem programmis kasutada. Kuna me rakendame selles artiklis funktsiooni fstat() näidet, peame lisama päisefaili 'sys/ stat.h'. Failiteabe saamiseks peame teadma seadme tüüpi, kus fail eksisteerib. Seadme andmetüübi teadasaamiseks lisame päise 'tüüp. h” programmis.





Faili teave peab sisaldama faili viimati avamise aega ja selles tehtud muudatust. Nendele aja helistamise funktsioonidele juurdepääsuks lisame päisefaili “times. h” ja „fcntl. h” faili lubade funktsioonide päis. Viimane päis 'stdio. h” fail on programmi kaasatud ka printf() ja scanf() meetodite kutsumiseks programmis. Päisefailid, mille lisamist programmi arutasime, on järgmised:

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

Pärast seda, kui eelnevalt mainitud päisefailid on edukalt programmi imporditud, koostame nüüd programmi, et saada teavet konkreetse faili kohta. Deklareerime funktsiooni, mille tagastustüüp on 'int', nimega 'main'. Selles põhifunktsioonis deklareerime massiivi 'char' ja määrame sellele faili nime, mille kohta peame teavet teadma. Seejärel defineerime 'statistiteabe' andmetüübiga 'struct'. See struktuur on koht, kuhu salvestame faili kohta teabe.



Seejärel määratleme teise muutuja nimega 'file_descriptor' andmetüübiga 'täisarv'. Tingimuses 'if' küsime luba faili lugemiseks ja kirjutamiseks, kui see on olemas, edastades 'S_IWUSR' ja massiivi nime funktsioonile 'create()', mis nõuab failile õigusi, kui see on olemas või loo muul viisil uus fail. Edastame selle funktsiooni create() tingimusele „if”, mis annab teada, kui funktsiooni create() väärtus on väiksem kui null, siis tekib tõrketeade, et fail tuleb luua. Kui fstat() parameetritega 'file_descriptor' ja 'information' ning 'faili teabe salvestamise asukoha aadress' ei võrdu nulliga, kuvame fstat() tagastatud väärtuse, mis on faili teave . Ja info prindime atribuutide kujul, nt. seadme ID, milles fail on salvestatud, seadme Inode number, faili kaitserežiim, kasutaja ID, rühma ID ja lingi number (kõva kujul).

Pärast nende atribuutide kuvamist tuleme lausetest välja ja sulgeme faili close() meetodi abil. Seejärel eemaldage faili linkimine, kutsudes välja unlink() meetodi.

#include
#include
#include
#include
#include

peamine ( ) {
char massiivi [ ] = 'amp.fail' ;
struktuur statistiline teave ;
int failideskriptor ;
kui ( ( failideskriptor = tehtud ( massiivi , S_IWUSR ) ) < 0 )
viga ( 'loo() viga' ) ;
muidu {
kui ( olek ( failideskriptor , & teavet ) != 0 )
viga ( 'fstat() viga' ) ;
muidu {
paneb ( 'fstat() väärtused:' ) ;
printf ( ' inode: %d \n ' , ( int ) info. st_ino ) ;
printf ( ' seadme_id: %d \n ' , ( int ) info. st_dev ) ;
printf ( ' seadme režiim: %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 ) ;
}
Sulge ( failideskriptor ) ;
linkimine lahti ( massiivi ) ;
}
}

Programm pääseb esmalt juurde failitoimingu loale ja loeb seejärel selles olevad andmed ja kirjutab need eraldatud mälukohta. Atribuudid, mille andsime programmile failist kuvamiseks, kuvatakse väljundis.

Järeldus

Failiteabele juurdepääsuks kasutasime funktsiooni fstat(). Kõigepealt õppisime funktsiooni fstat() süntaksi, mida selgitati funktsiooni parameetrite täieliku kirjeldusega. Seejärel kirjutasime selle funktsiooni jaoks programmi, kus pääsesime esmalt juurde oma failiomaniku loale ja seejärel lugesime faili ning kuvasime faili teabest soovitud atribuudid. Andsime endast parima, et võimaldada teil mõista fstat() kontseptsiooni ja loodame, et see aitab teid teie programmides.