Fstat Function sa C

Fstat Function Sa C



Ang function na fstat() ay tumatawag sa system upang ibalik ang impormasyon (tungkol sa ilang file) na nakadepende sa descriptor ng file na iyon. Kinukuha ng function na ito ang impormasyon para sa file na nauugnay sa descriptor ng file na kilala rin bilang 'fildes' at pagkatapos ay isusulat ang impormasyong ito sa lokasyon ng memory kung saan itinuturo ng buffer. Ang uri ng pagbabalik ng function na ito ay isang integer. Ibinabalik nito ang halagang '0' kung matagumpay na naisakatuparan ang programa. Kung hindi, nagbabalik ito ng '-1' sa function kung sakaling mabigo ang pagpapatupad. Ang execution error para sa function na ito ay maaaring dahil sa ilang partikular na dahilan tulad ng kung ang mga fildes ng function ay may di-wastong descriptor para sa file, kung ang reading error para sa input at output ay nangyayari mula sa file, at kung ang memory location (structure) kung saan ang buffer ay tumuturo upang isulat ang impormasyon ng file ay walang sapat na inilalaan na memorya para sa laki ng file.

Pamamaraan

Sinusunod ng artikulong ito ang sunud-sunod na pagkakasunud-sunod upang ipatupad ang function na fstat() upang makuha ang impormasyon ng file. Una naming natutunan ang syntax para sa function na ito, ang mga parameter na kinakailangan para sa function na ito. Pagkatapos, ginagamit namin ang syntax na ito para magsagawa ng ilang halimbawa para sa function na fstat().







Syntax

Ang paraan upang ideklara ang fstat() function na nagbibigay-daan sa pag-access ng programa sa impormasyon ng file ay binanggit sa sumusunod na linya:



$ #include
$ int estado ( int fildes , struct stat * buf ) ;

Sa tuwing kailangan naming tawagan ang function sa aming programa, kailangan muna naming i-import ang mga file ng header na sumusuporta sa function na ito bilang 'sys/stat.h'. Ang uri ng pagbabalik para sa function ay palaging 'int' at kasama sa parameter ang 'fildes' na may uri ng data na 'int'. Ang Fildes ay isang descriptor para sa file na gusto naming malaman ang impormasyon tungkol sa. Ang isa pang parameter na ibinibigay sa function ay ang pointer na 'buf'. Ito ay isang pointer na 'struct stat' na tumuturo patungo sa istraktura kung saan gusto naming iimbak ang data tungkol sa file. Ito ay isang maikling paglalarawan ng mga parameter ng input para sa function na fstat().



Halimbawa

Ginagamit namin ang madalas na binanggit na paglalarawan at nagpapatupad ng isang programa upang makuha ang impormasyon tungkol sa anumang / partikular na file sa pamamagitan ng aming programa. Isinulat namin ang program na ito sa Microsoft Visual Studio C compiler para sa pagpapatupad. Magsisimula tayo sa halimbawa sa pamamagitan ng paglikha muna ng isang proyekto at pagkatapos ay idagdag ito sa mga C repositoryo sa Visual Studio. Upang idagdag ang proyekto sa mga C file, isasama namin ang '.c' sa pangalan ng proyekto at idagdag ito sa source file ng proyekto. Ang susunod na hakbang pagkatapos ng paglikha ng proyekto ay tawagan ang lahat ng kinakailangang mga aklatan para sa mga function na maaari naming gamitin sa ibang pagkakataon sa programa. Dahil ipinapatupad namin ang halimbawa para sa function na fstat() sa artikulong ito, kailangan naming isama ang header file na 'sys/ stat.h '. Para sa impormasyon ng file, kailangan nating malaman ang uri ng device kung saan umiiral ang file. Para malaman ang uri ng data para sa device, isinama namin ang header na “type. h” sa programa.





Dapat kasama sa impormasyon ng file ang oras kung kailan huling binuksan ang file at ang pagbabagong ginawa dito. Upang ma-access ang mga function ng pagtawag sa oras na ito, idinagdag namin ang header file na 'times. h' at ang 'fcntl. h” na header para sa mga function ng pahintulot ng file. Ang huling header na 'stdio. h” na file ay kasama rin sa programa upang tawagan ang mga pamamaraan ng printf() at scanf() sa programa. Ang mga header file na aming tinalakay na isasama sa programa ay ang mga sumusunod:

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

Matapos matagumpay na ma-import sa program ang naunang nabanggit na mga file ng header, bubuo na kami ngayon ng program upang makuha ang impormasyon tungkol sa isang partikular na file. Idineklara namin ang function na may uri ng pagbabalik bilang 'int' na may pangalang 'pangunahing'. Sa pangunahing function na ito, nagdedeklara kami ng array na 'char' at itinalaga dito ang pangalan ng file kung saan kailangan naming malaman ang isang impormasyon. Pagkatapos, tinukoy namin ang isang 'impormasyon ng istatistika' na may uri ng data na 'struct'. Ang struct na ito ay isang lugar kung saan iniimbak namin ang impormasyon tungkol sa file.



Pagkatapos, tinukoy namin ang isa pang variable na may pangalang 'file_descriptor' na may uri ng data bilang 'integer'. Sa 'kung kundisyon', humihingi kami ng pahintulot para sa read at write na mga operasyon para sa file kung mayroon ito, na ipinapasa ang 'S_IWUSR' at pangalan ng array sa function na 'create()' na tumatawag para sa mga pahintulot para sa file kung ito ay umiiral o lumikha ng isang bagong file kung hindi man. Ipinapasa namin ang create() function na ito sa 'if condition' na nagsasaad kung ang create() function na value ay mas mababa sa zero pagkatapos ay lumilikha ng error na kailangang gawin ang file. Kung ang fstat() na may mga parameter bilang 'file_descriptor' at 'impormasyon' at 'ang address ng lokasyon kung saan nakaimbak ang impormasyon ng file' ay hindi katumbas ng zero, ipinapakita namin ang ibinalik na halaga ng fstat() na impormasyon ng file . At ini-print namin ang impormasyon sa anyo ng mga katangian, hal. device id kung saan naka-store ang file, ang Inode number ng device, ang protection mode ng file, ang user id, ang group id at ang numero ng link (hard form).

Pagkatapos ipakita ang mga katangiang ito, lumabas kami sa mga pahayag at isinasara ang file gamit ang close() na pamamaraan. Pagkatapos, i-unlink ang file sa pamamagitan ng pagtawag sa unlink() na paraan.

#include
#include
#include
#include
#include

pangunahing ( ) {
char array [ ] = 'amp.file' ;
struct impormasyon sa istatistika ;
int filedescriptor ;
kung ( ( filedescriptor = ginawa ( array , S_IWUSR ) ) < 0 )
kaguluhan ( 'creat() error' ) ;
iba pa {
kung ( estado ( filedescriptor , at impormasyon ) != 0 )
kaguluhan ( 'fstat() error' ) ;
iba pa {
naglalagay ( 'fstat() values:' ) ;
printf ( ' inode: %d \n ' , ( int ) impormasyon. st_ino ) ;
printf ( ' device_id: %d \n ' , ( int ) impormasyon. st_dev ) ;
printf ( ' mode ng device: %08x \n ' , impormasyon. st_mode ) ;
printf ( ' no_of_hard_links: %d \n ' , impormasyon. st_nlink ) ;
printf ( ' u_id: %d \n ' , ( int ) impormasyon. st_uid ) ;
printf ( ' g_id: %d \n ' , ( int ) impormasyon. st_gid ) ;
}
malapit na ( filedescriptor ) ;
i-unlink ( array ) ;
}
}

Ang programa ay unang ma-access ang pahintulot para sa pagpapatakbo ng file at pagkatapos ay babasahin ang data sa loob nito at isulat ito sa inilalaan na lokasyon ng memorya. Ang mga katangian na ibinigay namin sa programa upang ipakita mula sa file ay ipinapakita sa output.

Konklusyon

Ginamit namin ang function na fstat() upang ma-access ang impormasyon ng file. Una naming natutunan ang syntax para sa fstat() function na ipinaliwanag kasama ang kumpletong paglalarawan ng mga parameter ng function. Pagkatapos, nagsulat kami ng program para sa function na ito kung saan una naming na-access ang pahintulot ng aming may-ari ng file at pagkatapos ay binasa ang file at ipinakita ang mga attribute na gusto namin mula sa impormasyon ng file. Sinubukan namin ang aming makakaya sa pagpapaunawa sa iyo ng konsepto ng fstat() at umaasa kaming makakatulong ito sa iyo sa iyong mga programa.