Фстат функција у Ц

Fstat Funkcija U C



Функција фстат() позива систем да врати информације (у вези са неком датотеком) које зависе од дескриптора те датотеке. Ова функција добија информације за датотеку која је повезана са дескриптором датотеке такође познатим као „филдес“, а затим уписује ове информације на меморијску локацију на коју показује бафер. Тип повратка ове функције је цео број. Враћа вредност „0“ ако је програм успешно извршен. У супротном, враћа „-1“ функцији у случају неуспелог извршења. Грешка у извршавању ове функције може бити узрокована неким специфичним разлозима као што су ако поља функције имају неважећи дескриптор за датотеку, ако се грешка читања за улаз и излаз јавља из датотеке и ако је меморијска локација (структура) где бафер указује на уписивање информација о датотеци нема довољно додељене меморије за величину датотеке.

Процедура

Овај чланак прати секвенцијални редослед имплементације функције фстат() за добијање информација о датотеци. Прво учимо синтаксу за ову функцију, параметре потребне за ову функцију. Затим користимо ову синтаксу да извршимо неке примере за функцију фстат().







Синтакса

Метод за декларисање функције фстат() која омогућава приступ програму информацијама о датотеци помиње се у следећем реду:



$ #инцлуде <сис/стат.х>
$ инт стање ( инт филдес , струцт стат * буф ) ;

Кад год морамо да позовемо функцију у нашем програму, прво морамо да увеземо датотеке заглавља које подржавају ову функцију као „сис/стат.х“. Тип повратка за функцију је увек „инт“, а параметар укључује „филдес“ са типом података „инт“. Филдес је дескриптор за датотеку о којој желимо да знамо информације. Други параметар који се даје функцији је показивач „буф“. То је показивач „струцт стат“ који указује на структуру у којој желимо да ускладиштимо податке о датотеци. Ово је кратак опис улазних параметара за функцију фстат().



Пример

Користимо претходно поменути опис и извршавамо програм да бисмо добили информације о било којој / одређеној датотеци кроз наш програм. Овај програм пишемо у компајлеру Мицрософт Висуал Студио Ц за извршење. Почињемо са примером тако што прво креирамо пројекат, а затим га додамо у Ц спремишта у Висуал Студио. Да бисмо пројекат додали у Ц датотеке, укључујемо „.ц“ са именом пројекта и додајемо га изворној датотеци пројекта. Следећи корак након креирања пројекта је позивање свих потребних библиотека за функције које ћемо касније користити у програму. Пошто имплементирамо пример функције фстат() у овом чланку, морамо да укључимо датотеку заглавља „сис/ стат.х“. За информације о датотеци, морамо знати тип уређаја на којем датотека постоји. Да бисмо знали тип података за уређај, укључујемо заглавље „типе. х” у програму.





Информације о датотеци морају укључивати време када је датотека последњи пут отворена и модификације које су у њој направљене. Да бисмо приступили овим функцијама позивања времена, додајемо датотеку заглавља „тимес. х“ и „фцнтл. х” заглавље за функције дозволе датотеке. Последње заглавље „стдио. х” датотека је такође укључена у програм за позивање метода принтф() и сцанф() у програму. Датотеке заглавља за које смо разговарали да буду укључене у програм су следеће:

$ #инцлуде <сис/типес.х>
$ #инцлуде <сис/стат.х>
$ #инцлуде <фцнтл.х>
$ #инцлуде <стдио.х>
$ #инцлуде <тиме.х>

Након што су претходно поменуте датотеке заглавља успешно увезене у програм, сада градимо програм да бисмо добили информације о одређеној датотеци. Функцију која има тип враћања декларирамо као „инт“ са именом „маин“. У овој главној функцији, декларишемо низ „цхар“ и додељујемо му име датотеке за коју треба да знамо информације. Затим дефинишемо „стат информације“ са типом података „струцт“. Ова структура је место где чувамо информације о датотеци.



Затим дефинишемо другу променљиву са именом 'филе_десцриптор' са типом података као 'цео број'. У „иф услову“, тражимо дозволу за операције читања и писања за датотеку ако она постоји, прослеђујући „С_ИВУСР“ и име низа функцији „цреате()“ која захтева дозволе за датотеку ако постоји или у супротном направите нову датотеку. Ову функцију цреате() прослеђујемо у „иф услов“ који наводи да ли је вредност функције цреате() мања од нуле, а затим ствара грешку да датотека треба да се креира. Ако фстат() са параметрима као што су „филе_десцриптор“ и „информатион“ и „адреса локације на којој се чувају информације о датотеци“ није једнак нули, приказујемо фстат() враћену вредност која је информација о датотеци . И ми штампамо информације у облику атрибута, нпр. ИД уређаја у коме је датотека сачувана, Иноде број уређаја, режим заштите датотеке, кориснички ИД, ИД групе и број везе (тврди облик).

Након приказа ових атрибута, излазимо из наредби и затварамо датотеку помоћу методе цлосе(). Затим раскините везу са датотеком позивањем методе унлинк().

#инцлуде <сис/типес.х>
#инцлуде <сис/стат.х>
#инцлуде <фцнтл.х>
#инцлуде <стдио.х>
#инцлуде <тиме.х>

главни ( ) {
цхар низ [ ] = 'амп.филе' ;
струцт стат информације ;
инт филедесцриптор ;
ако ( ( филедесцриптор = направио ( низ , С_ИВУСР ) ) < 0 )
перрор ( „грешка креирања()“ ) ;
друго {
ако ( стање ( филедесцриптор , & информације ) != 0 )
перрор ( „фстат() грешка“ ) ;
друго {
ставља ( 'фстат() вредности:' ) ;
принтф ( ' иноде: %д ' , ( инт ) инфо. ст_ино ) ;
принтф ( ' ИД_уређаја: %д ' , ( инт ) инфо. ст_дев ) ;
принтф ( ' режим уређаја: %08к ' , инфо. ст_моде ) ;
принтф ( ' но_оф_хард_линкс: %д ' , инфо. ст_нлинк ) ;
принтф ( ' у_ид: %д ' , ( инт ) инфо. ст_уид ) ;
принтф ( ' г_ид: %д ' , ( инт ) инфо. ст_гид ) ;
}
Близу ( филедесцриптор ) ;
прекинути везу ( низ ) ;
}
}

Програм ће прво приступити дозволи за операцију датотеке, а затим чита податке у њој и уписује их на додељену меморијску локацију. Атрибути које смо дали програму да прикаже из датотеке приказани су у излазу.

Закључак

Користили смо функцију фстат() за приступ информацијама о датотеци. Прво смо научили синтаксу за функцију фстат() која је објашњена са комплетним описом параметара функције. Затим смо написали програм за ову функцију где смо прво приступили дозволи власника датотеке, а затим прочитали датотеку и приказали атрибуте које смо желели од информација о датотеци. Дали смо све од себе да вам омогућимо да разумете концепт фстат() и надамо се да ће вам помоћи у вашим програмима.