Fonction fstat en c

Fonction fstat en c

La fonction fstat () appelle le système pour renvoyer les informations (concernant un fichier) qui dépend du descripteur de ce fichier. Cette fonction obtient les informations pour le fichier associé au descripteur de fichier également connu sous le nom de «fildes», puis écrit ces informations dans l'emplacement de la mémoire où le tampon pointe vers. 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 de l'exécution. L'erreur d'exécution de cette fonction peut être due à certaines raisons spécifiques comme si les fildes de la fonction ont un descripteur non valide pour le fichier, si l'erreur de lecture pour l'entrée et la sortie se produit à partir du fichier, et si l'emplacement de la mémoire (structure) où Le tampon pointe pour écrire les informations sur le fichier n'ont 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 () pour obtenir les informations de fichier. Nous apprenons d'abord la syntaxe de cette fonction, les paramètres requis pour 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:

$ # Inclure
$ int fstat (int fildes, struct stat * buf);

Chaque fois que nous devons appeler la fonction de notre programme, nous devons d'abord importer les fichiers d'en-tête qui prennent en charge cette fonction comme «SYS / STAT.h ”. Le type de retour pour la fonction est toujours «int» et le paramètre comprend «fildes» avec le type de données «int». Fildes est un descripteur du fichier que nous voulons connaître les informations sur. Un autre paramètre qui est donné à la fonction est le pointeur «buf». Il s'agit d'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 de façon pertinent 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 le Visual Studio. Pour ajouter le projet aux fichiers C, nous incluons le «.c ”avec le nom du projet et l'ajouter au fichier source du projet. L'étape suivante après la création du projet est d'appeler toutes les bibliothèques requises pour les fonctions que nous pourrions utiliser plus tard dans le programme. Puisque nous mettons en œuvre 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 où 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 le moment où le fichier a été ouvert pour la dernière fois et la modification qui a été effectuée. Pour accéder à ces fonctions d'appel de temps, nous ajoutons le fichier d'en-tête «fois. h ”et le« fcntl. En-tête h ”pour les fonctions d'autorisation du fichier. Le dernier en-tête «STdio. Le fichier 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:

$ # Inclure
$ # Inclure
$ # Inclure
$ # Inclure
$ # Inclure

Une fois que les fichiers d'en-tête mentionnés précédemment sont importés avec succès dans le programme, nous créons 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 que nous devons connaître une information pour. Ensuite, nous définissons une «information de statistiques» avec le type de données «structure». 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 si», nous demandons la permission des opérations de lecture et d'écriture pour le fichier s'il existe, passant le «S_IWUSR» et le nom du tableau à la fonction «Create ()» qui demande les autorisations pour le fichier si il existe ou crée un nouveau fichier autrement. Nous passons cette fonction create () à la «condition if» qui indique que si la valeur de la fonction create () est inférieure à zéro, crée une erreur 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» ne correspond pas à zéro, nous affichons la valeur renvoyée fstat () qui est les informations du fichier. Et nous imprimons les informations sous forme d'attributs, e.g. ID de périphérique dans lequel le fichier est stocké, le numéro inode de l'appareil, le mode de protection du fichier, l'ID utilisateur, l'ID de groupe et le numéro du lien (formulaire dur).

Après avoir affiché ces attributs, nous sortons des instructions et fermons le fichier à l'aide de la méthode Close (). Ensuite, dissociez le fichier en appelant la méthode Unlink ().

#inclure
#inclure
#inclure
#inclure
#inclure
principal()
char array [] = "ampli.déposer";
Informations sur STRUT STAT;
int filedEscriptor;
if ((fileDescriptor = Creat (array, s_iwusr))) < 0)
Perror ("Create () Error");
autre
if (fstat (filedEscriptor et information) != 0)
Perror ("FSTAT () ERROR");
autre
put ("fstat () valeurs:");
printf ("inode:% d \ n", (int) info.st_ino);
printf ("Device_id:% d \ n", (int) info.st_dev);
printf ("mode de périphérique:% 08x \ n", info.ST_MODE);
printf ("no_of_hard_links:% d \ n", info.st_nlink);
printf ("u_id:% d \ n", (int) info.st_uid);
printf ("g_id:% d \ n", (int) info.ST_GID);

close (filedEscriptor);
Unlink (tableau);

Le programme accédera d'abord à l'autorisation de l'opération de fichier, puis lit les données dedans et l'écrivez dans l'emplacement de la mémoire allouée. Les attributs que nous avons donnés à 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é à la permission 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 permettre de comprendre le concept de fstat () et nous espérons que cela vous aiderait dans vos programmes.