Fonction lStat en C

Fonction lStat en C
«La fonction LSTAT () est essentiellement un type d'appel système lié à notre système d'exploitation. Pour connaître les détails de la fonction lStat (), nous devons d'abord savoir ce que sont les appels système.

Les appels système donnent un environnement au mode de service disponible dans le système d'exploitation. Notre programme peut s'exécuter en deux modes. L'un d'eux est le mode utilisateur, et un autre est le mode du noyau. Si un programme est exécuté en mode noyau, le programme a le droit d'accéder directement à la mémoire, au matériel et à d'autres ressources directement.

Les appels système sont les composants du système d'exploitation qui ont le droit d'utiliser tous les fichiers système."

Quelle est la fonction lStat ()?

La fonction lStat () contrôlera tout l'état du système et renvoie les informations sur un lien spécial appelé lien symbolique. La fonction stat () & fstat () donne les informations sur le fichier particulier, mais la fonction lStat () fait référence à un lien qui pointe le fichier particulier.

Syntaxe

La fonction de syntaxe de LSTAT () est -
int lstat (const char * path, struct stat * buf);

Ici à l'intérieur de la fonction lStat (), nous passerons deux paramètres comme argument.

Le premier paramètre de la fonction est un chemin qui donne des informations sur son identification et la source probable ou réelle du fichier.

Un autre paramètre est un buff qui donne des informations sur l'adresse de la structure de statistiques. Cette structure statistique contient toutes les informations mises à jour sur le fichier particulier, qui est pointé par le * pointeur BUF.

La structure de la fonction lSta ()

Le système appelé la fonction lStat () renvoie une structure appelée structure statistique. Les membres de données de cette structure STAT sont:

  1. ST_MODE: les autorisations de fichiers et les informations de type de fichier.
  2. ST_INO: Informations sur l'inode.
  3. ST_DEV: le nom du périphérique.
  4. ST_UID: obtenir l'identification du fichier source.
  5. ST_GID: Obtenir le groupe d'identification du fichier source
  6. ST_SIZE: la taille du fichier.
  7. ST_ATIME: mentionnant la dernière fois du fichier utilisé.
  8. ST_CTIME: mentionnant le temps de modification des métadonnées du fichier. Exemple: changement de nom de fichier.
  9. ST_Mtime: mentionnant l'heure de modification du contenu du fichier.
  10. ST_NLINK: mentionnant le numéro de l'entrée du répertoire.
  11. ST_BLOCKS: Compter le nombre de blocs utilisés (512 octets).

Macros

La fonction LSTAT () a un statement de stade, qui contient plusieurs types de macros. Ces macros aident la fonction lSta () pour reconnaître le type de fichiers. Le nom de ces macros est:

  1. S_isblk (): tester un fichier spécial de bloc.
  2. S_ischr (): examiner si le fichier est un fichier de périphérique de caractère.
  3. S_isdir (): le type de fichier est un répertoire.
  4. S_isfo (): inspection liée au tuyau dans le système.
  5. S_isreg (): examiner le fichier couramment utilisé.
  6. S_islink (): examiner le lien souple.
  7. S_issock (): Examinez si le fichier est une prise.

Maintenant, nous verrons un exemple de programmation pour démontrer la fonction d'appel du système LSTAT ().

Exemple de programmation 1

#inclure
#inclure
#inclure
#inclure
#inclure
#inclure
int main()

char fl [] = "t.c ", sln [] =" t.lien" ;
struct stat inf;
int fd;
if ((fd = create (fl, s_iwusr))<0)
Perror ("Create () Error");
autre

Close (FD);
if (link (fl, sln)!= 0)
perror ("link () error");
autre

if (lstat (sln et inf)!= 0)
Perror ("LSTAT () ERROR");
autre

put ("nous obtenons des informations en dessous de LSTAT () pour un fichier:");
printf ("liens de fichiers:% d \ n", (int) inf.st_nlink);
printf ("fichier uid:% d \ n", (int) inf.st_uid);
printf ("fichier inode:% d \ n", (int) inf.st_ino);
printf ("File Gid:% d \ n", (int) inf.ST_GID);
printf ("File Dev Id:% d \ n", (int) inf.st_dev);
printf ("Mode de fichier:% 08x \ n", Inf.ST_MODE);

Unlink (SLN);

Unlink (fl);

retour 0;

Sortir

Explication

Ici, nous verrons une sortie en utilisant la fonction lStat () sur l'état d'un fichier particulier créé par le programmeur. Dans ce programme, nous avons créé un fichier régulier et créé son lien symbolique. Il affichera les informations sur I-node, ID DEV, mode, aucun lien, UID et GID. La fonction lStat () fournit toutes les informations détaillées d'un fichier créé et de son lien souple correspondant.

Exemple de programmation-2

Voyons une autre implémentation détaillée de la fonction LSTAT ().

#inclure
#inclure
#inclure
#inclure
#inclure
int main (int argc, char * argv [])

struct stat a;
if (argc != 2)
fprintf (stderr, "Veuillez saisir le nom du fichier comme 1er argument:% s \ n", argv [0]);
exit (exit_failure);

if (lstat (argv [1], & a) == -1)
perror ("une erreur pour LSTAT");
exit (exit_failure);

printf ("donc le type de fichier d'entrée est =>");
si un.ST_MODE & S_IFMT) == S_IFDIR)
printf ("Directory \ n");
sinon si ((un.ST_MODE & S_IFMT) == S_IFIFO)
printf ("FIFO / PIPE \ n");
sinon si ((un.ST_MODE & S_IFMT) == S_IFCHR)
printf ("Caracter Device \ n");
sinon si ((un.ST_MODE & S_IFMT) == S_IFBLK)
printf ("Block Device \ n");
sinon si ((un.ST_MODE & S_IFMT) == S_IFreg)
printf ("régulier \ n");
sinon si ((un.ST_MODE & S_IFMT) == S_IFSOCK)
printf ("socket \ n");
sinon si ((un.ST_MODE & S_IFMT) == S_IFLNK)
printf ("lien symbolique \ n");
autre
printf ("inconnu \ n");
printf ("Non. de la liste des liens:% ld \ n ", (long) a.st_nlink);
printf ("propriété: uid =% ld gid =% ld \ n",
(long) a.st_uid, (long) a.ST_GID);
printf ("inode no% ld \ n", (long) a.st_ino);
printf ("mode:% lo (octal) \ n",
(non signé) un.ST_MODE);
printf ("Le dernier changement est:% s", ctime (& a.st_ctime));
printf ("Dernier temps d'accès est:% s", ctime (& a.st_atime));
printf ("Last Changer le contenu du temps du fichier est:% s", ctime (& a.st_mtime));
printf ("Longueur préférée des blocs de don d'E / S:% ld octets \ n",
(long) a.st_blkSize);
printf ("La longueur du fichier est:% lld octets \ n",
(Long Long) A.st_size);
printf ("compter le non. de blocs utilisés% lld \ n ",
(Long Long) A.ST_BLOCKS);
exit (exit_success);

Sortir

Explication

Ici, nous montrerons toutes les perspectives de la fonction d'appel du système LSTAT ().

Lors de la première sortie, nous entrons un nom de fichier sans ses informations de chemin. En tant que sortie, nous obtiendrons l'utilisation du programme. Le programme a besoin d'un nom / chemin de fichier d'entrée comme premier argument.

Dans la prochaine sortie, nous afficherons les informations sur le fichier de périphérique de bloc. Ici 5 + 0 enregistre et 5 + 0 enregistre, et le type de fichier d'entrée est un périphérique de bloc.

Dans la sortie suivante, nous créerons un fichier nommé "papan_char_device_file«Quel type est un appareil de caractère. La fonction lStAT () l'aidera à donner toutes les informations liées à ce périphérique de caractère.

Après cela, nous ferons un répertoire nommé «Habibpur"Quel type de fichier est un répertoire. LSTAT () créera toutes les informations sur ce fichier.

Ensuite, nous créerons un autre fichier nommé "Papan_fifo_file"Dont le type de fichier est FIFO / PIPE. Nous obtiendrons la fonction LSTAT fournie des informations pour le fichier en tant que sortie.

Après cela, nous établirons un lien symbolique nommé «puja.SMS"D'un fichier nommé"avishek.SMS”Et obtenez la fonction lSTAT fournie des informations pour le fichier en tant que sortie.

Ensuite, nous vérifierons le type de fichier de «avishek.SMS,"Ce qui est un fichier régulier [déjà créé à l'étape précédente].

Et enfin, nous créerons un autre fichier nommé » nadia_socket_file.chaussette», Quel type de fichier est une prise et obtenez toutes les informations détaillées sur ce fichier.

À l'aide de la fonction lSta (), nous reconnaîtreons tous les fichiers.

Conclusion

Ici, nous aurons mentionné tous les aspects de l'appel du système de fonction LSTAT (). Voyant toutes les caractéristiques et le type de mise en œuvre de la fonction lStAT (), nous pouvons clairement comprendre qu'il s'agit d'une fonction d'appel système très importante pour obtenir tous les attributs d'un fichier particulier que nous avons créé dans notre système, et le système répondra en fonction de à l'instruction de la commande de fonction lstat ().