Fonction Fstat en C

Fonction Fstat En C



La fonction fstat() appelle le système pour renvoyer les informations (concernant un fichier) qui dépendent du descripteur de ce fichier. Cette fonction obtient les informations du fichier qui est associé au descripteur de fichier appelé aussi 'fildes' puis écrit ces informations dans l'emplacement mémoire vers lequel pointe le buffer. Le type de retour de cette fonction est un entier. Il renvoie la valeur '0' si le programme est exécuté avec succès. Sinon, il renvoie un '-1' à la fonction en cas d'échec d'exécution. L'erreur d'exécution de cette fonction peut être due à des raisons spécifiques comme si le fichier de la fonction a un descripteur invalide pour le fichier, si l'erreur de lecture pour l'entrée et la sortie se produit à partir du fichier, et si l'emplacement mémoire (structure) où le tampon pointe pour écrire les informations du fichier n'a pas assez de mémoire allouée pour la taille du fichier.

Procédure

Cet article suit l'ordre séquentiel pour implémenter la fonction fstat() afin d'obtenir les informations sur le fichier. Nous apprenons d'abord la syntaxe de cette fonction, les paramètres nécessaires à cette fonction. Ensuite, nous utilisons cette syntaxe pour exécuter quelques exemples pour la fonction fstat().







Syntaxe

La méthode pour déclarer la fonction fstat() qui permet l'accès du programme aux informations du fichier est mentionnée dans la ligne suivante :



$ #include
$ entier Etat ( entier fildes , structure statistique * buf ) ;

Chaque fois que nous devons appeler la fonction dans notre programme, nous devons d'abord importer les fichiers d'en-tête qui prennent en charge cette fonction en tant que « sys/stat.h ». Le type de retour de la fonction est toujours 'int' et le paramètre inclut 'fildes' avec le type de données 'int'. Fildes est un descripteur du fichier dont nous voulons connaître les informations. Un autre paramètre donné à la fonction est le pointeur « buf ». C'est un pointeur 'struct stat' qui pointe vers la structure où nous voulons stocker les données sur le fichier. Ceci est une brève description des paramètres d'entrée pour la fonction fstat().



Exemple

Nous utilisons la description mentionnée précédemment et exécutons un programme pour obtenir les informations sur n'importe quel fichier spécifique via notre programme. Nous écrivons ce programme dans le compilateur Microsoft Visual Studio C pour l'exécution. Nous commençons par l'exemple en créant d'abord un projet, puis en l'ajoutant aux référentiels C dans Visual Studio. Pour ajouter le projet aux fichiers C, nous incluons le '.c' avec le nom du projet et l'ajoutons au fichier source du projet. La prochaine étape après la création du projet consiste à appeler toutes les bibliothèques requises pour les fonctions que nous pourrons utiliser plus tard dans le programme. Puisque nous implémentons l'exemple de la fonction fstat() dans cet article, nous devons inclure le fichier d'en-tête « sys/stat.h ». Pour les informations sur le fichier, nous devons connaître le type de périphérique sur lequel le fichier existe. Pour connaître le type de données de l'appareil, nous incluons l'en-tête 'type. h' dans le programme.





Les informations sur le fichier doivent inclure l'heure à laquelle le fichier a été ouvert pour la dernière fois et la modification qui y a été apportée. Pour accéder à ces fonctions d'appel de temps, nous ajoutons le fichier d'en-tête 'times. h' et le 'fcntl. h' en-tête pour les fonctions d'autorisation de fichier. Le dernier en-tête 'stdio. h' est également inclus dans le programme pour appeler les méthodes printf() et scanf() dans le programme. Les fichiers d'en-tête dont nous avons discuté pour être inclus dans le programme sont les suivants :

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

Une fois les fichiers d'en-tête mentionnés précédemment importés avec succès dans le programme, nous construisons maintenant le programme pour obtenir les informations sur un fichier spécifique. Nous déclarons la fonction ayant le type de retour comme 'int' avec le nom 'main'. Dans cette fonction principale, nous déclarons un tableau 'char' et lui attribuons le nom du fichier pour lequel nous devons connaître une information. Ensuite, nous définissons une « information statistique » avec le type de données « struct ». Cette structure est un endroit où nous stockons les informations sur le fichier.



Ensuite, nous définissons une autre variable avec le nom 'file_descriptor' avec le type de données comme 'entier'. Dans la 'condition if', nous demandons l'autorisation pour les opérations de lecture et d'écriture pour le fichier s'il existe, en passant le 'S_IWUSR' et le nom du tableau à la fonction 'create()' qui appelle les autorisations pour le fichier si il existe ou créez un nouveau fichier sinon. Nous passons cette fonction create() à la 'condition if' qui indique si la valeur de la fonction create() est inférieure à zéro, puis crée une erreur indiquant que le fichier doit être créé. Si le fstat() avec des paramètres comme 'file_descriptor' et 'information' et 'l'adresse de l'emplacement où les informations du fichier sont stockées' n'est pas égal à zéro, nous affichons la valeur renvoyée par fstat() qui est l'information du fichier . Et nous imprimons les informations sous forme d'attributs, par ex. l'identifiant de l'appareil dans lequel le fichier est stocké, le numéro d'inode de l'appareil, le mode de protection du fichier, l'identifiant de l'utilisateur, l'identifiant du groupe et le numéro du lien (forme dure).

Après avoir affiché ces attributs, nous sortons des instructions et fermons le fichier en utilisant la méthode close(). Ensuite, dissociez le fichier en appelant la méthode unlink().

#include
#include
#include
#include
#include

principale ( ) {
carboniser déployer [ ] = 'amp.fichier' ;
structure informations statistiques ;
entier descripteur de fichier ;
si ( ( descripteur de fichier = fabriqué ( déployer , S_IWUSR ) ) < 0 )
erreur ( 'erreur de création()' ) ;
autre {
si ( Etat ( descripteur de fichier , & informations ) != 0 )
erreur ( 'erreur fstat()' ) ;
autre {
met ( 'valeurs fstat() :' ) ;
printf ( ' inode : %d \n ' , ( entier ) Info. st_ino ) ;
printf ( ' identifiant_appareil : %d \n ' , ( entier ) Info. st_dev ) ;
printf ( ' mode de l'appareil : %08x \n ' , Info. st_mode ) ;
printf ( ' no_of_hard_links : %d \n ' , Info. st_nlink ) ;
printf ( ' u_id : %d \n ' , ( entier ) Info. st_uid ) ;
printf ( ' g_id : %d \n ' , ( entier ) Info. st_gid ) ;
}
proche ( descripteur de fichier ) ;
dissocier ( déployer ) ;
}
}

Le programme accédera d'abord à l'autorisation pour l'opération sur le fichier, puis lira les données qu'il contient et les écrira dans l'emplacement de mémoire alloué. Les attributs que nous avons donné au programme à afficher à partir du fichier sont affichés dans la sortie.

Conclusion

Nous avons utilisé la fonction fstat() pour accéder aux informations du fichier. Nous avons d'abord appris la syntaxe de la fonction fstat() expliquée avec la description complète des paramètres de la fonction. Ensuite, nous avons écrit un programme pour cette fonction où nous avons d'abord accédé à l'autorisation de notre propriétaire de fichier, puis lu le fichier et affiché les attributs que nous voulions à partir des informations du fichier. Nous avons fait de notre mieux pour vous faire comprendre le concept de fstat() et nous espérons que cela vous aidera dans vos programmes.