Fonction LEALLINK C

Fonction LEALLINK C

La fonction ReadLink () du langage C est utilisée pour insérer les informations du lien symbolique, qui fait référence à un chemin, dans le tampon. La lecture du contenu d'un lien symbolique est appelée «lire un lien» ou «readLink». Le contenu restant du tampon reste indéterminé si la longueur des octets du lien symbolique est inférieure à Buffer_Size. Dans cet article, nous discuterons de quelques exemples pour illustrer le fonctionnement de la fonction ReadLink C dans le système Kali Linux. La syntaxe de la fonction ReadLink est donnée comme suit:

La fonction readLink () se trouve dans le fichier d'en-tête . Ce fichier d'en-tête doit être inclus au-dessus de la fonction principale du fichier de code. Le tampon ne contient pas de caractère nul après le résultat.

#inclure
  • ssize_t readLink (const char * restrict link_cheminée, Char * restreindre amortir,
      • size_t tampon_size));

La valeur du lien symbolique est raccourcie pour s'adapter dans le tampon s'il est trop court pour le maintenir dans son intégralité (tampon_size). Les octets de taille de tampon initiaux doivent être ajoutés au tampon au cas où l'argument du tampon n'est pas assez grand pour maintenir le contenu du lien. Si la taille du tampon est supérieure à la taille maximale, le résultat est défini par l'implémentation. Le nombre d'octets chargés dans le tampon sera retourné si readLink () est exécuté avec succès. Sinon, il doit retourner -1 et définir Errno pour identifier l'erreur exacte et laisser le tampon non modifié. Voici la liste des descriptions des erreurs avec le code:

  • Einval: Il n'y a pas de lien symbolique dans le fichier nommé.
  • EIO: La lecture du système de fichiers a entraîné une erreur d'entrée ou de sortie.
  • Eacces: Un élément du préfixe de chemin n'a pas d'autorisation de recherche.
  • Eloop: Dans les liens symboliques, il y a une boucle. Lors de la résolution de l'argument de chemin, cette erreur est augmentée si plus que des liens symboliques Symloop POSIX sont trouvés.
  • Enoent: Il n'y a pas de fichier tel que le lien nommé.

Évaluons la fonction readLink () dans certains exemples. Créez un fichier de programmation C dans le terminal Linux à l'aide de l'éditeur VIM. Vous pouvez utiliser Nano ou tout autre éditeur pour créer le fichier.

Tous les fichiers d'en-tête sont inclus dans le code ci-dessous avant la fonction principale. Dans la première ligne du bloc principal, la structure «stat» est déclarée. Après cela, un pointeur du type de caractère est déclaré, qui est ultérieur utilisé dans la fonction readLink (). Nous utilisons SSIZE_T au lieu d'un type de données entier. C'est un type signé. Leurs valeurs maximales sont liées à la question de savoir si le système d'exploitation est 32 bits ou 64 bits. Nous avons déclaré deux variables de ce type de données: Buffer_Size et Nbytes (nombre d'octets).

Dans la ligne de code suivante, nous avons vérifié le nombre d'arguments fournis de la ligne de commande à la fonction principale. Si cela n'est pas égal à 2, le programme sort de la fonction principale à l'aide de la fonction de sortie, qui affiche également un message d'erreur. L'emplacement de mémoire référencé par du tampon est l'endroit où les informations d'état d'un fichier donné sont stockées après avoir été obtenue par la fonction lSta (). Si le nom de fichier est le lien symbolique, alors cette fonction renvoie les détails sur le lien symbolique lui-même. Les informations renvoyées par la fonction LSTAT se trouve sous la forme d'une structure de statistiques, qui est référencée par un tampon.

Les données d'état d'un certain fichier sont collectées par la fonction lStat () et placées dans l'adresse mémoire pointée par le tampon. Cette méthode fournit des informations sur le lien symbolique lui-même si le nom du fichier est le lien symbolique. Les données que la fonction LSTAT renvoie se présente sous la forme d'une structure de statistiques. Nous avons augmenté la taille du tampon d'un.

Dans certains cas, la taille signalée est nul, retournée par le lien symbolique. Dans cette situation, définissez la taille du tampon sur la valeur path_max. Définissez le tampon à l'aide de l'allocation de mémoire, qui utilise le tampon_size. Vérifiez si le tampon est nul, puis affichez un message d'erreur. Appelez la fonction ReadLink et passez le chemin du lien de lecture, du tampon et de la tampon_size à cette fonction. La fonction renvoie combien d'octets ont été retournés dans le chemin. Si le nombre d'octets est -1, affichez l'erreur, affichez l'emplacement de point du fichier lié. Ensuite, libérez le tampon.

Compilez le fichier C à l'aide du compilateur GCC. Le link read.Le fichier out contient le résultat du fichier.

Dans la première exécution, il passe le nom du répertoire, qui n'est pas le lien symbolique, il donne donc une erreur qu'il n'y a pas de tel fichier ou répertoire.

Ci-dessous, nous avons passé le répertoire racine, qui est un argument non valide.

Maintenant que nous avons passé le chemin, la fonction ReadLink renvoie le nom du lien symbolique vers lequel il pointe.

Utilisons un fichier C pour construire un fichier et un lien symbolique. Nous avons créé un nom de fichier et un lien symbolique dans la fonction principale. Créer le fichier avec le commutateur S iwuser en utilisant la fonction Créer. Un nouveau lien dur peut être réalisé à un fichier existant à l'aide de la méthode Link () de la bibliothèque C. Pour créer un lien souple, utilisez la méthode SymLink (). Il ne sera pas écrasé si le fichier ou le chemin du lien existe déjà. Lorsqu'il réussit, les fonctions link () et symLink () renvoient les deux 0.

Utilisez le compilateur GCC pour compiler le code, puis enregistrez les résultats dans ReadLink1.dépose.

Exécuter le code. Voici la sortie:

Conclusion:

Il s'agit de l'utilisation de la fonction ReadLink () de C dans certains des exemples implémentés sur le système Kali Linux. Nous avons développé son utilisation, sa syntaxe et les erreurs qu'il contient dans certains des exemples pour être plus spécifiques et plus clairs.