Funkcia Fstat v C

Funkcia Fstat V C



Funkcia fstat() volá systém, aby vrátil informácie (týkajúce sa nejakého súboru), ktoré závisia od deskriptora tohto súboru. Táto funkcia získa informácie o súbore, ktoré sú spojené s deskriptorom súboru, ktorý je známy aj ako „fildes“, a potom tieto informácie zapíše do miesta pamäte, na ktorú ukazuje vyrovnávacia pamäť. Návratový typ tejto funkcie je celé číslo. Ak je program úspešne vykonaný, vráti hodnotu „0“. V opačnom prípade vráti funkcii „-1“ v prípade neúspešného vykonania. Chyba pri vykonávaní tejto funkcie môže byť spôsobená niektorými špecifickými dôvodmi, napríklad ak súbory funkcie majú neplatný deskriptor pre súbor, ak chyba čítania pre vstup a výstup nastane zo súboru a ak miesto v pamäti (štruktúra), kde vyrovnávacia pamäť ukazuje na zápis informácií o súbore nemá dostatok pridelenej pamäte pre veľkosť súboru.

Postup

Tento článok sa riadi postupným poradím implementácie funkcie fstat() na získanie informácií o súbore. Najprv sa naučíme syntax tejto funkcie, parametre potrebné pre túto funkciu. Potom túto syntax použijeme na vykonanie niekoľkých príkladov funkcie fstat().







Syntax

Metóda na deklarovanie funkcie fstat(), ktorá umožňuje prístup programu k informáciám o súbore, je uvedená v nasledujúcom riadku:



$ #include
$ int štát ( int fildes , štrukturovať stat * buf ) ;

Kedykoľvek musíme volať funkciu v našom programe, musíme najprv importovať hlavičkové súbory, ktoré túto funkciu podporujú, ako „sys/stat.h“. Návratový typ funkcie je vždy „int“ a parameter obsahuje „fildes“ s typom údajov „int“. Fildes je deskriptor súboru, o ktorom chceme vedieť informácie. Ďalším parametrom, ktorý je funkcii pridelený, je ukazovateľ „buf“. Je to ukazovateľ „struct stat“, ktorý ukazuje na štruktúru, do ktorej chceme uložiť údaje o súbore. Toto je stručný popis vstupných parametrov pre funkciu fstat().



Príklad

Používame už spomínaný popis a spúšťame program, aby sme získali informácie o akomkoľvek / konkrétnom súbore prostredníctvom nášho programu. Tento program napíšeme v kompilátore Microsoft Visual Studio C na vykonanie. Začneme príkladom tak, že najprv vytvoríme projekt a potom ho pridáme do C repozitárov vo Visual Studiu. Ak chcete pridať projekt do súborov C, zahrnieme „.c“ s názvom projektu a pridáme ho do zdrojového súboru projektu. Ďalším krokom po vytvorení projektu je volanie všetkých požadovaných knižníc pre funkcie, ktoré môžeme neskôr v programe použiť. Keďže v tomto článku implementujeme príklad funkcie fstat(), musíme zahrnúť hlavičkový súbor „sys/stat.h “. Pre informácie o súbore potrebujeme poznať typ zariadenia, kde súbor existuje. Aby sme poznali typ údajov pre zariadenie, zahrnieme hlavičku „type. h“ v programe.





Informácie o súbore musia obsahovať čas posledného otvorenia súboru a úpravu, ktorá v ňom bola vykonaná. Na prístup k týmto funkciám volania času pridávame hlavičkový súbor „times. h“ a „fcntl. h“ pre funkcie povolenia súboru. Posledná hlavička „stdio. Program obsahuje aj súbor h” na volanie metód printf() a scanf() v programe. Hlavičkové súbory, o ktorých sme hovorili, že majú byť zahrnuté do programu, sú nasledovné:

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

Po úspešnom importe vyššie uvedených hlavičkových súborov do programu teraz zostavujeme program, aby sme získali informácie o konkrétnom súbore. Funkciu s návratovým typom deklarujeme ako „int“ s názvom „main“. Do tejto hlavnej funkcie deklarujeme pole „char“ a priradíme mu názov súboru, o ktorom potrebujeme vedieť informácie. Potom definujeme „štatistické informácie“ s dátovým typom „struct“. Táto štruktúra je miesto, kde ukladáme informácie o súbore.



Potom definujeme ďalšiu premennú s názvom „file_descriptor“ s typom údajov „integer“. V podmienke „if“ požiadame o povolenie na operácie čítania a zápisu pre súbor, ak existuje, a odošleme „S_IWUSR“ a názov poľa funkcii „create()“, ktorá vyžaduje povolenia pre súbor, ak existuje alebo inak vytvorte nový súbor. Túto funkciu create() odovzdáme do podmienky „if“, ktorá uvádza, že ak je hodnota funkcie create() menšia ako nula, vytvorí sa chyba, že je potrebné súbor vytvoriť. Ak sa funkcia fstat() s parametrami ako „file_descriptor“ a „information“ a „adresa miesta, kde sú uložené informácie o súbore“ nerovná nule, zobrazíme vrátenú hodnotu fstat(), ktorá je informáciou o súbore. . A informácie vytlačíme vo forme atribútov, napr. ID zariadenia, v ktorom je súbor uložený, číslo Inode zariadenia, režim ochrany súboru, ID používateľa, ID skupiny a číslo odkazu (pevná forma).

Po zobrazení týchto atribútov vyjdeme z príkazov a zatvoríme súbor pomocou metódy close(). Potom zrušte prepojenie súboru volaním metódy unlink().

#include
#include
#include
#include
#include

hlavné ( ) {
char pole [ ] = 'amp.file' ;
štrukturovať štatistické informácie ;
int deskriptor súboru ;
ak ( ( deskriptor súboru = vyrobené ( pole , S_IWUSR ) ) < 0 )
chyba ( 'Chyba vytvorenia()' ) ;
inak {
ak ( štát ( deskriptor súboru , & informácie ) != 0 )
chyba ( 'chyba fstat()' ) ;
inak {
kladie ( 'fstat() values:' ) ;
printf ( ' inode: %d \n ' , ( int ) Info. st_ino ) ;
printf ( ID_zariadenia: %d \n ' , ( int ) Info. st_dev ) ;
printf ( ' režim zariadenia: %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 ) ;
}
Zavrieť ( deskriptor súboru ) ;
odpojiť ( pole ) ;
}
}

Program najskôr pristúpi k oprávneniu na operáciu so súborom a následne v ňom načíta údaje a zapíše ich do prideleného pamäťového miesta. Atribúty, ktoré sme dali programu na zobrazenie zo súboru, sú zobrazené vo výstupe.

Záver

Na prístup k informáciám o súbore sme použili funkciu fstat(). Najprv sme sa naučili syntax pre funkciu fstat() vysvetlenú s úplným popisom parametrov funkcie. Potom sme napísali program pre túto funkciu, v ktorom sme najprv pristúpili k oprávneniu vlastníka súboru a potom sme si súbor prečítali a zobrazili atribúty, ktoré sme chceli z informácií o súbore. Snažili sme sa, aby sme vám umožnili pochopiť koncept fstat() a dúfame, že vám pomôže vo vašich programoch.