Fstat funkcija C

Fstat Funkcija C



Fstat() funkcija iškviečia sistemą, kad pateiktų informaciją (apie tam tikrą failą), kuri priklauso nuo to failo deskriptoriaus. Ši funkcija gauna informaciją apie failą, susietą su failo deskriptoriumi, dar vadinamu „fildes“, ir įrašo šią informaciją į atminties vietą, į kurią nukreipia buferis. Šios funkcijos grąžinimo tipas yra sveikasis skaičius. Jis grąžina „0“ reikšmę, jei programa sėkmingai vykdoma. Priešingu atveju, nepavykus vykdyti, funkcijai grąžinama „-1“. Šios funkcijos vykdymo klaida gali atsirasti dėl tam tikrų specifinių priežasčių, pvz., jei funkcijos failuose yra netinkamas failo aprašas, jei įvesties ir išvesties skaitymo klaida įvyko faile ir jei atminties vieta (struktūra), kurioje buferis nurodo, kad įrašytų failo informaciją, jam nepakanka atminties failo dydžiui.

Procedūra

Šiame straipsnyje pateikiama nuosekli tvarka, kaip įdiegti funkciją fstat() norint gauti failo informaciją. Pirmiausia išmokstame šios funkcijos sintaksę, šiai funkcijai reikalingus parametrus. Tada mes naudojame šią sintaksę, kad vykdytume kai kuriuos funkcijos fstat () pavyzdžius.







Sintaksė

Funkcijos fstat() deklaravimo metodas, leidžiantis programai pasiekti failo informaciją, paminėtas šioje eilutėje:



$ #include
$ tarpt valstybė ( tarpt fildes , struktūra stat * buf ) ;

Kai turime iškviesti funkciją savo programoje, pirmiausia turime importuoti antraštės failus, kurie palaiko šią funkciją kaip „sys/ stat.h“. Funkcijos grąžinimo tipas visada yra „int“, o parametras apima „fildes“ su duomenų tipu „int“. Fildes yra failo, apie kurį norime sužinoti informaciją, aprašas. Kitas parametras, suteikiamas funkcijai, yra rodyklė „buf“. Tai „struct stat“ rodyklė, nukreipianti į struktūrą, kurioje norime saugoti duomenis apie failą. Tai trumpas funkcijos fstat() įvesties parametrų aprašymas.



Pavyzdys

Mes naudojame anksčiau minėtą aprašymą ir vykdome programą, kad gautume informaciją apie bet kurį / konkretų failą per mūsų programą. Rašome šią programą Microsoft Visual Studio C kompiliatoriuje vykdymui. Pradedame nuo pavyzdžio, pirmiausia sukurdami projektą ir tada įtraukdami jį į „Visual Studio“ C saugyklas. Norėdami pridėti projektą prie C failų, įtraukiame „.c“ su projekto pavadinimu ir pridedame jį prie projekto šaltinio failo. Kitas žingsnis po projekto sukūrimo – iškviesti visas reikalingas bibliotekas funkcijoms, kurias galime panaudoti vėliau programoje. Kadangi šiame straipsnyje įgyvendiname funkcijos fstat() pavyzdį, turime įtraukti antraštės failą „sys/ stat.h“. Norėdami gauti informaciją apie failą, turime žinoti įrenginio, kuriame yra failas, tipą. Norėdami sužinoti įrenginio duomenų tipą, įtraukiame antraštę „tipas. h“ programoje.





Failo informacijoje turi būti nurodytas paskutinio failo atidarymo laikas ir jame atlikti pakeitimai. Norėdami pasiekti šias laiko skambinimo funkcijas, pridedame antraštės failą „times. h“ ir „fcntl. h“ failo leidimo funkcijų antraštę. Paskutinė antraštė „stdio. h“ failas taip pat įtrauktas į programą, kad būtų galima iškviesti programoje esančius printf() ir scanf() metodus. Antraštės failai, kuriuos aptarėme įtraukti į programą, yra šie:

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

Po to, kai anksčiau minėti antraštės failai sėkmingai importuojami į programą, dabar sukuriame programą, kad gautume informaciją apie konkretų failą. Mes deklaruojame funkciją, kurios grąžinimo tipas yra „int“, pavadinimu „main“. Šioje pagrindinėje funkcijoje mes paskelbiame „char“ masyvą ir priskiriame jam failo, kurio informaciją turime žinoti, pavadinimą. Tada apibrėžiame „statistinę informaciją“ su duomenų tipu „struct“. Ši struktūra yra vieta, kurioje saugome informaciją apie failą.



Tada apibrėžiame kitą kintamąjį pavadinimu „file_descriptor“, kurio duomenų tipas yra „integer“. Sąlygoje „jei“ prašome leidimo failo skaitymo ir rašymo operacijoms, jei jis egzistuoja, perduodant „S_IWUSR“ ir masyvo pavadinimą funkcijai „create()“, kuri reikalauja leidimo failui, jei jis egzistuoja arba sukurkite naują failą kitaip. Šią funkciją Create() perduodame sąlygai „jei“, kuri nurodo, jei funkcijos create() reikšmė mažesnė už nulį, tada sukuriama klaida, kad reikia sukurti failą. Jei fstat() su parametrais „failo_deskriptorius“ ir „informacija“ bei „vietos, kurioje saugoma failo informacija, adresas“ nėra lygus nuliui, rodome fstat() grąžintą reikšmę, kuri yra failo informacija. . O informaciją spausdiname atributų pavidalu, pvz. įrenginio ID, kuriame saugomas failas, įrenginio Inode numeris, failo apsaugos režimas, vartotojo ID, grupės ID ir nuorodos numeris (kieta forma).

Parodę šiuos atributus, išeiname iš teiginių ir uždarome failą naudodami close() metodą. Tada atsiekite failą iškviesdami unlink() metodą.

#include
#include
#include
#include
#include

pagrindinis ( ) {
char masyvas [ ] = 'amp.failas' ;
struktūra statistinė informacija ;
tarpt failo aprašas ;
jeigu ( ( failo aprašas = pagamintas ( masyvas , S_IWUSR ) ) < 0 )
klaidą ( 'kurti() klaida' ) ;
Kitas {
jeigu ( valstybė ( failo aprašas , & informacija ) != 0 )
klaidą ( 'fstat() klaida' ) ;
Kitas {
deda ( 'fstat() reikšmės:' ) ;
printf ( ' inode: %d \n , ( tarpt ) informacija. st_ino ) ;
printf ( ' įrenginio_id: %d \n , ( tarpt ) informacija. st_dev ) ;
printf ( ' įrenginio režimas: %08x \n , informacija. st_mode ) ;
printf ( ' no_of_hard_links: %d \n , informacija. st_nlink ) ;
printf ( 'u_id: %d \n , ( tarpt ) informacija. st_uid ) ;
printf ( ' g_id: %d \n , ( tarpt ) informacija. st_gid ) ;
}
Uždaryti ( failo aprašas ) ;
atsieti ( masyvas ) ;
}
}

Programa pirmiausia pasieks leidimą naudoti failą, tada nuskaitys jame esančius duomenis ir įrašys juos į paskirtą atminties vietą. Atributai, kuriuos programai suteikėme rodyti iš failo, rodomi išvestyje.

Išvada

Norėdami pasiekti failo informaciją, naudojome funkciją fstat (). Pirmiausia sužinojome funkcijos fstat () sintaksę, paaiškintą su visu funkcijos parametrų aprašymu. Tada sukūrėme šios funkcijos programą, kurioje pirmiausia pasiekėme failo savininko leidimą, tada perskaitėme failą ir iš failo informacijos parodėme norimus atributus. Mes stengėmės, kad suprastumėte fstat() sąvoką ir tikimės, kad ji jums padės jūsų programose.