Fstat függvény C-ben

Fstat Fuggveny C Ben



Az fstat() függvény meghívja a rendszert, hogy visszaadja a fájl leírójától függő információkat (egyes fájlokra vonatkozóan). Ez a funkció beszerzi a „fildes” néven is ismert fájlleíróhoz társított fájl információit, majd beírja ezeket az információkat arra a memóriahelyre, ahová a puffer mutat. Ennek a függvénynek a visszatérési típusa egy egész szám. A program sikeres végrehajtása esetén „0” értéket ad vissza. Ellenkező esetben „-1”-et ad vissza a függvénynek sikertelen végrehajtás esetén. Ennek a függvénynek a végrehajtási hibája bizonyos okokból adódhat, például ha a függvény fájljaiban érvénytelen a fájl leírója, ha a bemeneti és kimeneti olvasási hiba a fájlból történik, és ha a memóriahely (struktúra) a puffer a fájlinformációk írására mutat, nincs elég memória lefoglalva a fájl méretéhez.

Eljárás

Ez a cikk az fstat() függvény végrehajtásának sorrendjét követi a fájlinformációk lekéréséhez. Először megtanuljuk ennek a függvénynek a szintaxisát, a függvényhez szükséges paramétereket. Ezután ezt a szintaxist használjuk néhány példa végrehajtására az fstat() függvényre.







Szintaxis

Az fstat() függvény deklarálásának módszere, amely lehetővé teszi a program számára a fájlinformációk elérését, a következő sorban található:



$ #include
$ int állapot ( int fildes , struct statisztika * buf ) ;

Amikor meg kell hívnunk a függvényt a programunkban, először azokat a fejlécfájlokat kell importálnunk, amelyek támogatják ezt a funkciót „sys/ stat.h” néven. A függvény visszatérési típusa mindig „int”, és a paraméter „fildes”-et tartalmaz „int” adattípussal. A Fildes annak a fájlnak a leírója, amelyről tudni akarunk információkat. A függvény másik paramétere a „buf” mutató. Ez egy „struct stat” mutató, amely arra a struktúrára mutat, ahol a fájl adatait tárolni szeretnénk. Ez az fstat() függvény bemeneti paramétereinek rövid leírása.



Példa

A korábban említett leírást használjuk, és egy programot futtatunk, hogy a programunkon keresztül információt kapjunk bármely / adott fájlról. Ezt a programot a Microsoft Visual Studio C fordítójába írjuk a végrehajtáshoz. A példával kezdjük úgy, hogy először létrehozunk egy projektet, majd hozzáadjuk a Visual Studio C-tárolóihoz. A projekt C-fájlokhoz való hozzáadásához a „.c”-t a projektnévvel együtt adjuk hozzá a projekt forrásfájljához. A következő lépés a projekt létrehozása után az összes szükséges könyvtár meghívása a függvényekhez, amelyeket később felhasználhatunk a programban. Mivel ebben a cikkben az fstat() függvény példáját valósítjuk meg, bele kell foglalnunk a „sys/ stat.h” fejlécfájlt. A fájlinformációkhoz ismernünk kell az eszköz típusát, ahol a fájl létezik. Az eszköz adattípusának megismeréséhez a „type. h” a programban.





A fájl információinak tartalmazniuk kell a fájl legutóbbi megnyitásának idejét és a benne végrehajtott módosítást. Az időhívási funkciók eléréséhez hozzáadjuk a „times. h” és az „fcntl. h” fejlécet a fájlengedélyezési funkciókhoz. Az utolsó fejléc „stdio. h” fájl is szerepel a programban a printf() és scanf() metódusok meghívásához a programban. A fejlécfájlok, amelyeket megbeszéltünk, hogy szerepeljenek a programban, a következők:

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

Miután a korábban említett fejlécfájlokat sikeresen importáltuk a programba, most úgy építjük fel a programot, hogy egy adott fájlról információt kapjunk. A visszatérési típusú függvényt „int”-nek deklaráljuk „main” néven. Ebben a fő függvényben deklarálunk egy „char” tömböt, és hozzárendeljük annak a fájlnak a nevét, amelyhez információt kell tudnunk. Ezután meghatározunk egy „stat information”-t „struct” adattípussal. Ez a struktúra egy olyan hely, ahol a fájlra vonatkozó információkat tároljuk.



Ezután egy másik változót definiálunk „file_descriptor” néven, amelynek adattípusa „integer”. Az „if feltételben” engedélyt kérünk a fájl olvasási és írási műveleteihez, ha létezik, átadva az „S_IWUSR”-t és a tömb nevét a „create()” függvénynek, amely engedélyeket kér a fájlhoz, ha létezik, vagy más módon hozzon létre egy új fájlt. Ezt a create() függvényt átadjuk az „if feltételnek”, amely kimondja, hogy ha a create() függvény értéke kisebb, mint nulla, akkor hibát hoz létre, hogy létre kell hozni a fájlt. Ha az fstat() a „file_descriptor” és „information” paraméterekkel, valamint „a fájlinformáció tárolási helyének címe” nem egyenlő nullával, akkor az fstat() visszaadott értéket jelenítjük meg, amely a fájl információja. . Az információkat pedig attribútumok formájában nyomtatjuk ki, pl. eszközazonosító, amelyben a fájl tárolva van, az eszköz Inode száma, a fájl védelmi módja, a felhasználói azonosító, a csoportazonosító és a hivatkozás száma (kemény formában).

Az attribútumok megjelenítése után kilépünk az utasításokból, és a close() metódussal bezárjuk a fájlt. Ezután szüntesse meg a fájl összekapcsolását az unlink() metódus meghívásával.

#include
#include
#include
#include
#include

fő- ( ) {
char sor [ ] = 'amp.file' ;
struct statisztikai adatok ;
int fájlleíró ;
ha ( ( fájlleíró = készült ( sor , S_IWUSR ) ) < 0 )
tévedés ( 'creat() error' ) ;
más {
ha ( állapot ( fájlleíró , & információ ) != 0 )
tévedés ( 'fstat() hiba' ) ;
más {
tesz ( 'fstat() értékek:' ) ;
printf ( ' inode: %d \n ' , ( int ) info. st_ino ) ;
printf ( ' device_id: %d \n ' , ( int ) info. st_dev ) ;
printf ( ' az eszköz módja: %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 ) ;
}
Bezárás ( fájlleíró ) ;
szétkapcsolás ( sor ) ;
}
}

A program először hozzáfér a fájlművelet engedélyéhez, majd beolvassa a benne lévő adatokat és beírja a lefoglalt memóriahelyre. A kimenetben megjelennek azok az attribútumok, amelyeket a programnak megjeleníteni adtunk a fájlból.

Következtetés

A fájlinformációk eléréséhez az fstat() függvényt használtuk. Először megtanultuk az fstat() függvény szintaxisát, amelyet a függvény paramétereinek teljes leírásával magyarázunk. Ezután írtunk egy programot ehhez a funkcióhoz, ahol először elértük a fájltulajdonos engedélyét, majd elolvastuk a fájlt, és megjelenítettük a kívánt attribútumokat a fájl információiból. Minden tőlünk telhetőt megtettünk annak érdekében, hogy megértse az fstat() fogalmát, és reméljük, hogy segíteni fog a programjaiban.