Функция Fstat в C

Funkcia Fstat V C



Функцията fstat() извиква системата да върне информацията (относно някакъв файл), която зависи от дескриптора на този файл. Тази функция получава информацията за файла, който е свързан с файловия дескриптор, известен също като „fildes“, и след това записва тази информация в мястото на паметта, към което сочи буферът. Върнатият тип на тази функция е цяло число. Връща стойността „0“, ако програмата е изпълнена успешно. В противен случай връща „-1“ на функцията в случай на неуспешно изпълнение. Грешката при изпълнение на тази функция може да се дължи на някои специфични причини, като например ако полетата на функцията имат невалиден дескриптор за файла, ако грешката при четене за вход и изход възниква от файла и ако мястото в паметта (структурата), където буферът сочи да запише информацията за файла няма достатъчно разпределена памет за размера на файла.

Процедура

Тази статия следва последователния ред за прилагане на функцията fstat() за получаване на информация за файла. Първо научаваме синтаксиса за тази функция, параметрите, необходими за тази функция. След това използваме този синтаксис, за да изпълним някои примери за функцията fstat().







Синтаксис

Методът за деклариране на функцията fstat(), която позволява достъп на програмата до информацията за файла, е споменат в следния ред:



$ #include
$ вътр състояние ( вътр Филдс , структура статистика * буф ) ;

Всеки път, когато трябва да извикаме функцията в нашата програма, първо трябва да импортираме заглавните файлове, които поддържат тази функция като „sys/stat.h“. Върнатият тип за функцията винаги е „int“ и параметърът включва „fildes“ с тип данни „int“. Fildes е дескриптор за файла, за който искаме да знаем информацията. Друг параметър, който се дава на функцията, е указателят „buf“. Това е указател „struct stat“, който сочи към структурата, където искаме да съхраняваме данните за файла. Това е кратко описание на входните параметри за функцията fstat().



Пример

Ние използваме споменатото по-рано описание и изпълняваме програма, за да получим информация за всеки / конкретен файл чрез нашата програма. Ние пишем тази програма в компилатора Microsoft Visual Studio C за изпълнение. Започваме с примера, като първо създаваме проект и след това го добавяме към C хранилищата във Visual Studio. За да добавим проекта към C файловете, включваме „.c“ с името на проекта и го добавяме към изходния файл на проекта. Следващата стъпка след създаването на проекта е да извикаме всички необходими библиотеки за функциите, които може да използваме по-късно в програмата. Тъй като прилагаме примера за функцията fstat() в тази статия, трябва да включим заглавния файл „sys/stat.h“. За информацията за файла трябва да знаем типа устройство, където съществува файлът. За да знаем типа данни за устройството, ние включваме заглавката „type. h” в програмата.





Информацията за файла трябва да включва времето, когато файлът е бил отворен за последен път и модификацията, която е направена в него. За достъп до тези функции за извикване на време добавяме заглавния файл „times. h“ и „fcntl. h” заглавка за функциите за разрешение за файлове. Последният хедър „stdio. h” също е включен в програмата за извикване на методите printf() и scanf() в програмата. Заглавните файлове, които обсъдихме да бъдат включени в програмата, са както следва:

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

След като споменатите по-горе заглавни файлове са успешно импортирани в програмата, сега изграждаме програмата, за да получим информацията за конкретен файл. Декларираме функцията с тип връщане като „int“ с името „main“. В тази основна функция ние декларираме масив „char“ и му присвояваме името на файла, за който трябва да знаем информация. След това дефинираме „статистическа информация“ с типа данни „struct“. Тази структура е място, където съхраняваме информацията за файла.



След това дефинираме друга променлива с името „file_descriptor“ с тип данни като „integer“. В условието „if“ искаме разрешение за операциите за четене и запис за файла, ако съществува, като предаваме „S_IWUSR“ и името на масива на функцията „create()“, която извиква разрешенията за файла, ако той съществува или създайте нов файл в противен случай. Предаваме тази функция create() на „условието if“, което посочва, че стойността на функцията create() е по-малка от нула, тогава създава грешка, че файлът трябва да бъде създаден. Ако fstat() с параметри като „file_descriptor“ и „information“ и „адресът на местоположението, където се съхранява информацията за файла“ не е равен на нула, ние показваме върнатата от fstat() стойност, която е информацията за файла . И ние отпечатваме информацията под формата на атрибути, напр. идентификатор на устройство, в което се съхранява файлът, номер на Inode на устройството, режим на защита на файла, идентификатор на потребител, идентификатор на група и номер на връзката (твърда форма).

След като покажем тези атрибути, излизаме от операторите и затваряме файла с помощта на метода close(). След това прекратете връзката на файла, като извикате метода unlink().

#include
#include
#include
#include
#include

основен ( ) {
въглен масив [ ] = 'amp.file' ;
структура статистическа информация ;
вътр файлов дескриптор ;
ако ( ( файлов дескриптор = направени ( масив , S_IWUSR ) ) < 0 )
ужас ( 'creat() грешка' ) ;
друго {
ако ( състояние ( файлов дескриптор , и информация ) != 0 )
ужас ( 'fstat() грешка' ) ;
друго {
поставя ( 'fstat() стойности:' ) ;
printf ( ' inode: %d ' , ( вътр ) инфо. st_ino ) ;
printf ( ' device_id: %d ' , ( вътр ) инфо. st_dev ) ;
printf ( ' режим на устройството: %08x ' , инфо. st_mode ) ;
printf ( ' no_of_hard_links: %d ' , инфо. st_nlink ) ;
printf ( ' u_id: %d ' , ( вътр ) инфо. st_uid ) ;
printf ( ' g_id: %d ' , ( вътр ) инфо. st_gid ) ;
}
близо ( файлов дескриптор ) ;
прекратете връзката ( масив ) ;
}
}

Програмата първо ще получи достъп до разрешението за операцията с файла и след това ще прочете данните в него и ще ги запише в разпределеното място в паметта. Атрибутите, които дадохме на програмата за показване от файла, се показват в изхода.

Заключение

Използвахме функцията fstat() за достъп до информацията за файла. Първо научихме синтаксиса за функцията fstat(), обяснен с пълното описание на параметрите на функцията. След това написахме програма за тази функция, където първо получихме достъп до разрешението на собственика на нашия файл и след това прочетохме файла и показахме атрибутите, които искахме от информацията за файла. Опитахме всичко възможно да ви позволим да разберете концепцията на fstat() и се надяваме, че ще ви помогне във вашите програми.