fstat() ఫంక్షన్ ఆ ఫైల్ యొక్క డిస్క్రిప్టర్పై ఆధారపడిన సమాచారాన్ని (కొన్ని ఫైల్కి సంబంధించి) తిరిగి ఇవ్వడానికి సిస్టమ్ను పిలుస్తుంది. ఈ ఫంక్షన్ ఫైల్ డిస్క్రిప్టర్తో అనుబంధించబడిన ఫైల్ కోసం సమాచారాన్ని 'fildes' అని కూడా పిలుస్తారు మరియు ఈ సమాచారాన్ని బఫర్ సూచించే మెమరీ లొకేషన్లో వ్రాస్తుంది. ఈ ఫంక్షన్ యొక్క రిటర్న్ రకం పూర్ణాంకం. ప్రోగ్రామ్ విజయవంతంగా అమలు చేయబడితే అది “0” విలువను అందిస్తుంది. లేకపోతే, అది అమలు విఫలమైన సందర్భంలో ఫంక్షన్కు “-1”ని అందిస్తుంది. ఫంక్షన్ యొక్క ఫైల్లు ఫైల్ కోసం చెల్లని డిస్క్రిప్టర్ని కలిగి ఉంటే, ఇన్పుట్ మరియు అవుట్పుట్ కోసం రీడింగ్ ఎర్రర్ ఫైల్ నుండి సంభవించినట్లయితే మరియు మెమరీ స్థానం (నిర్మాణం) ఎక్కడ ఉంటే వంటి కొన్ని నిర్దిష్ట కారణాల వల్ల ఈ ఫంక్షన్కు అమలు లోపం సంభవించవచ్చు. ఫైల్ సమాచారాన్ని వ్రాయడానికి బఫర్ సూచిస్తోంది, ఫైల్ పరిమాణం కోసం తగినంత మెమరీని కేటాయించలేదు.
విధానము
ఈ కథనం ఫైల్ సమాచారాన్ని పొందడానికి fstat() ఫంక్షన్ని అమలు చేయడానికి సీక్వెన్షియల్ క్రమాన్ని అనుసరిస్తుంది. మేము మొదట ఈ ఫంక్షన్ కోసం సింటాక్స్, ఈ ఫంక్షన్కు అవసరమైన పారామితులను నేర్చుకుంటాము. అప్పుడు, fstat() ఫంక్షన్ కోసం కొన్ని ఉదాహరణలను అమలు చేయడానికి మేము ఈ వాక్యనిర్మాణాన్ని ఉపయోగిస్తాము.
వాక్యనిర్మాణం
ఫైల్ సమాచారానికి ప్రోగ్రామ్ యొక్క ప్రాప్యతను ప్రారంభించే fstat() ఫంక్షన్ను ప్రకటించే పద్ధతి క్రింది లైన్లో పేర్కొనబడింది:
$ #
$ int రాష్ట్రం ( int fildes , నిర్మాణం గణాంకాలు * buf ) ;
మన ప్రోగ్రామ్లోని ఫంక్షన్కు కాల్ చేయవలసి వచ్చినప్పుడల్లా, ఈ ఫంక్షన్కు “sys/ stat.h”గా మద్దతు ఇచ్చే హెడర్ ఫైల్లను మేము మొదట దిగుమతి చేసుకోవాలి. ఫంక్షన్ కోసం తిరిగి వచ్చే రకం ఎల్లప్పుడూ 'int' మరియు పరామితి డేటా రకం 'int'తో 'fildes'ని కలిగి ఉంటుంది. Fildes అనేది మనం సమాచారాన్ని తెలుసుకోవాలనుకునే ఫైల్ యొక్క వివరణ. ఫంక్షన్కు ఇవ్వబడిన మరొక పరామితి పాయింటర్ “బఫ్”. ఇది “struct stat” పాయింటర్, ఇది ఫైల్ గురించిన డేటాను మనం నిల్వ చేయాలనుకుంటున్న నిర్మాణం వైపు చూపుతుంది. ఇది fstat() ఫంక్షన్ కోసం ఇన్పుట్ పారామితుల యొక్క సంక్షిప్త వివరణ.
ఉదాహరణ
మా ప్రోగ్రామ్ ద్వారా ఏదైనా/నిర్దిష్ట ఫైల్ గురించిన సమాచారాన్ని పొందడానికి మేము ప్రత్యేకంగా పేర్కొన్న వివరణను ఉపయోగిస్తాము మరియు ప్రోగ్రామ్ను అమలు చేస్తాము. అమలు కోసం మేము ఈ ప్రోగ్రామ్ను Microsoft Visual Studio C కంపైలర్లో వ్రాస్తాము. మేము మొదట ప్రాజెక్ట్ను సృష్టించి, ఆపై దానిని విజువల్ స్టూడియోలోని సి రిపోజిటరీలకు జోడించడం ద్వారా ఉదాహరణతో ప్రారంభిస్తాము. ప్రాజెక్ట్ను C ఫైల్లకు జోడించడానికి, మేము ప్రాజెక్ట్ పేరుతో “.c”ని చేర్చుతాము మరియు దానిని ప్రాజెక్ట్ యొక్క సోర్స్ ఫైల్కి జోడిస్తాము. ప్రాజెక్ట్ సృష్టించిన తర్వాత తదుపరి దశ ఏమిటంటే, ప్రోగ్రామ్లో మనం తర్వాత ఉపయోగించగల ఫంక్షన్ల కోసం అవసరమైన అన్ని లైబ్రరీలను కాల్ చేయడం. మేము ఈ కథనంలో fstat() ఫంక్షన్ కోసం ఉదాహరణను అమలు చేస్తున్నాము కాబట్టి, మేము 'sys/ stat.h' అనే హెడర్ ఫైల్ను చేర్చాలి. ఫైల్ సమాచారం కోసం, ఫైల్ ఉన్న పరికర రకాన్ని మనం తెలుసుకోవాలి. పరికరం కోసం డేటా రకాన్ని తెలుసుకోవడానికి, మేము హెడర్ “టైప్ని చేర్చుతాము. h” కార్యక్రమంలో.
ఫైల్ సమాచారం తప్పనిసరిగా ఫైల్ చివరిగా తెరిచిన సమయం మరియు దానిలో చేసిన మార్పులను కలిగి ఉండాలి. ఈ టైమ్ కాలింగ్ ఫంక్షన్లను యాక్సెస్ చేయడానికి, మేము హెడర్ ఫైల్ “టైమ్స్ని జోడిస్తాము. h' మరియు 'fcntl. ఫైల్ అనుమతి ఫంక్షన్ల కోసం h” హెడర్. చివరి హెడర్ “stdio. ప్రోగ్రామ్లోని printf() మరియు scanf() పద్ధతులకు కాల్ చేయడానికి h” ఫైల్ ప్రోగ్రామ్లో కూడా చేర్చబడింది. ప్రోగ్రామ్లో చేర్చడానికి మేము చర్చించిన హెడర్ ఫైల్లు క్రింది విధంగా ఉన్నాయి:
$ #include$ #
$ #
$ #
$ #
మునుపు పేర్కొన్న హెడర్ ఫైల్లు ప్రోగ్రామ్లోకి విజయవంతంగా దిగుమతి అయిన తర్వాత, మేము ఇప్పుడు నిర్దిష్ట ఫైల్ గురించి సమాచారాన్ని పొందడానికి ప్రోగ్రామ్ను రూపొందిస్తాము. మేము 'ప్రధాన' పేరుతో 'int' రిటర్న్ రకాన్ని కలిగి ఉన్న ఫంక్షన్ను ప్రకటిస్తాము. ఈ ప్రధాన ఫంక్షన్లో, మేము “చార్” శ్రేణిని ప్రకటిస్తాము మరియు మేము సమాచారాన్ని తెలుసుకోవలసిన ఫైల్ పేరును దానికి కేటాయిస్తాము. అప్పుడు, మేము డేటా రకం “struct”తో “stat information”ని నిర్వచించాము. ఈ struct అనేది మేము ఫైల్ గురించి సమాచారాన్ని నిల్వ చేసే స్థలం.
అప్పుడు, మేము డేటా రకంతో “file_descriptor” పేరుతో మరొక వేరియబుల్ని “పూర్ణాంకం”గా నిర్వచిస్తాము. “If condition”లో, ఫైల్ ఉనికిలో ఉన్నట్లయితే దాని కోసం రీడ్ మరియు రైట్ ఆపరేషన్ల కోసం మేము అనుమతిని అడుగుతాము, “S_IWUSR” మరియు శ్రేణి పేరును “create()” ఫంక్షన్కి పంపడం ద్వారా ఫైల్కు అనుమతులను కోరుతుంది అది ఉంది లేదా లేకపోతే కొత్త ఫైల్ను సృష్టించండి. మేము ఈ create() ఫంక్షన్ను “if condition”కి పాస్ చేస్తాము, ఇది create() ఫంక్షన్ విలువ సున్నా కంటే తక్కువగా ఉంటే ఫైల్ని సృష్టించాల్సిన ఎర్రర్ను సృష్టిస్తుంది. 'file_descriptor' మరియు 'సమాచారం' మరియు 'ఫైల్ సమాచారం నిల్వ చేయబడిన స్థానం యొక్క చిరునామా' వంటి పరామితులు కలిగిన fstat() సున్నాకి సమానం కానట్లయితే, మేము ఫైల్ యొక్క సమాచారం అయిన fstat() అందించిన విలువను ప్రదర్శిస్తాము. . మరియు మేము సమాచారాన్ని లక్షణాల రూపంలో ముద్రిస్తాము, ఉదా. ఫైల్ నిల్వ చేయబడిన పరికర ఐడి, పరికరం యొక్క ఇనోడ్ సంఖ్య, ఫైల్ యొక్క రక్షణ మోడ్, వినియోగదారు ఐడి, గ్రూప్ ఐడి మరియు లింక్ సంఖ్య (హార్డ్ ఫారమ్).
ఈ లక్షణాలను ప్రదర్శించిన తర్వాత, మేము స్టేట్మెంట్ల నుండి బయటకు వచ్చి క్లోజ్() పద్ధతిని ఉపయోగించి ఫైల్ను మూసివేస్తాము. ఆపై, అన్లింక్() పద్ధతిని కాల్ చేయడం ద్వారా ఫైల్ను అన్లింక్ చేయండి.
#include#
#
#
#
ప్రధాన ( ) {
చార్ అమరిక [ ] = 'amp.file' ;
నిర్మాణం గణాంకాల సమాచారం ;
int దాఖలు చేసేవాడు ;
ఉంటే ( ( దాఖలు చేసేవాడు = చేసింది ( అమరిక , S_IWUSR ) ) < 0 )
తప్పు ( '() లోపం సృష్టించు' ) ;
లేకపోతే {
ఉంటే ( రాష్ట్రం ( దాఖలు చేసేవాడు , & సమాచారం ) != 0 )
తప్పు ( 'fstat() లోపం' ) ;
లేకపోతే {
ఉంచుతుంది ( 'fstat() విలువలు:' ) ;
printf ( ' ఐనోడ్: %d \n ' , ( int ) సమాచారం. st_ino ) ;
printf ( ' device_id: %d \n ' , ( int ) సమాచారం. st_dev ) ;
printf ( 'పరికర విధానం: %08x \n ' , సమాచారం. st_mode ) ;
printf ( ' no_of_hard_links: %d \n ' , సమాచారం. st_nlink ) ;
printf ( ' u_id: %d \n ' , ( int ) సమాచారం. st_uid ) ;
printf ( ' g_id: %d \n ' , ( int ) సమాచారం. st_gid ) ;
}
దగ్గరగా ( దాఖలు చేసేవాడు ) ;
అన్లింక్ చేయండి ( అమరిక ) ;
}
}
ప్రోగ్రామ్ మొదట ఫైల్ ఆపరేషన్ కోసం అనుమతిని యాక్సెస్ చేస్తుంది మరియు దానిలోని డేటాను చదివి, కేటాయించిన మెమరీ లొకేషన్లో వ్రాస్తుంది. ఫైల్ నుండి ప్రదర్శించడానికి ప్రోగ్రామ్కు మేము ఇచ్చిన లక్షణాలు అవుట్పుట్లో చూపబడతాయి.
ముగింపు
ఫైల్ సమాచారాన్ని యాక్సెస్ చేయడానికి మేము fstat() ఫంక్షన్ని ఉపయోగించాము. మేము మొదట fstat() ఫంక్షన్ కోసం సింటాక్స్ నేర్చుకున్నాము, ఫంక్షన్ యొక్క పారామితుల పూర్తి వివరణతో వివరించబడింది. అప్పుడు, మేము ఈ ఫంక్షన్ కోసం ఒక ప్రోగ్రామ్ను వ్రాసాము, అక్కడ మేము మొదట మా ఫైల్ యజమాని అనుమతిని యాక్సెస్ చేసి, ఆపై ఫైల్ను చదివి, ఫైల్ సమాచారం నుండి మేము కోరుకున్న లక్షణాలను ప్రదర్శిస్తాము. fstat() భావనను అర్థం చేసుకోవడానికి మేము మా వంతు ప్రయత్నం చేసాము మరియు ఇది మీ ప్రోగ్రామ్లలో మీకు సహాయపడుతుందని మేము ఆశిస్తున్నాము.