Lire Syscall dans Linux

Lire Syscall dans Linux

«Comme le titre indique que l'appel du système de lecture doit lire quelque chose à partir d'un emplacement particulier. Linux nous fournit l'appel du système de lecture pour lire les données de n'importe quel fichier et l'afficher sur la console, et le noyau du système Linux doit être impliqué dans tout ce processus, i.e., Pour ouvrir le fichier, lisez-le, écrivez des données dans un autre fichier, etc. Ce guide sera un bonus pour chaque utilisateur Linux et C qui veut apprendre à utiliser l'appel du système de lecture lors du codage. Avant de jeter un coup d'œil à l'extrait de code C, nous allons créer un fichier texte et un fichier C. Le fichier texte contiendra des données de texte aléatoires qui seront utilisées par la fonction read (). Les deux fichiers sont créés par la même requête «Touch» les unes après les autres, et la requête «LS» les montre dans un dossier à domicile."

Nous avons ajouté 3 lignes de texte dans le fichier de texte.fichier txt afin que nous puissions y accéder à l'aide de la fonction read () de C. Ces 3 lignes sont affichées à l'aide de la requête «Cat».

Exemple 01

Dans notre premier exemple, nous démontrerons l'utilisation de l'appel système Read () ou de la fonction POSIX pour accéder aux données à partir d'un fichier spécifique et l'afficher sur la console. L'exemple de code commence par les fichiers d'en-tête de base 3. Le stdio.H et Unistd.Les en-têtes H sont utilisés pour les fonctions mutables standard d'entrée / sortie. Le fcntl.H est utilisé pour utiliser les fonctions de lecture et d'écriture de POSIX pour créer et accéder aux fichiers. L'extrait illustré ci-dessous a été initié avec la déclaration d'un tampon de caractère de taille 100. Les données texte qui ont été montrées dans le fichier de texte.Le fichier txt de l'image ci-dessus sera accessible et affiché en morceaux.

L'instruction printf () est utilisée 3 fois pour nous informer du nombre de caractères totaux qui seront récupérés à partir du fichier et affiché sur la console. Trois descripteurs de fichiers, F1, F2 et F3, sont utilisés séparément pour appeler la fonction «Open ()» de C pour ouvrir un fichier de texte.Fichier txt en mode en lecture seule à l'aide de l'option "O_RDONLY". Les variables N1, N2 et N3 sont utilisées pour récupérer le résultat renvoyé en appelant la fonction «lire» 3 fois, respectivement.

Chaque fois, nous l'avons passé un tampon ou un tableau de type de caractère, je.e., Arr, un descripteur de fichiers différent, je.e., F1, F2, F3, et un nombre différent de caractères à accéder à partir du fichier et enregistré dans Buffer, I.e., 20, 40 et 60 respectivement. Chaque fois, nous utilisons le résultat retourné, je.e., n1, n2, n3, dans l'appel de la fonction écrite () pour accéder à la variable tampon «arr» avec le premier paramètre comme «1». Cette fonction d'écriture afficherait 20, 40 et 60 caractères après avoir lu le fichier TextFile.txt dans le tampon de caractère «arr». L'instruction printf () a été utilisée à chaque fois pour ajouter une rupture de ligne en utilisant «\ n» dans sa zone de chaîne.

De cette façon, chaque fois, certaines données de texte seraient affichées sur le shell après que la fonction Read () y accéde à partir du fichier «TextFile.SMS."Enregistrons rapidement notre code avant la compilation.

#inclure
#inclure
#inclure
int main()
Char Arr [100];
printf ("Reading 20 caractères… \ n");
int f1 = ouvert ("TextFile.txt ", o_rdonly);
int n1 = read (f1, arr, 20);
écrire (1, arr, n1);
printf ("\ n");
printf ("Reading 40 caractères… \ n");
int f2 = ouvert ("TextFile.txt ", o_rdonly);
int n2 = read (f2, arr, 40);
écrire (1, arr, n2);
printf ("\ n");
printf ("Reading 60 caractères… \ n");
int f3 = ouvert ("TextFile.txt ", o_rdonly);
int n3 = read (f3, arr, 60);
écrire (1, arr, n3);
printf ("\ n");

Après compilation de ce code avec le compilateur «GCC» C, nous avons essayé le «./un.Out ”Commande pour exécuter le code compilé. Il affiche 20, 40 et 60 caractères du fichier texte en utilisant "Read."

Exemple 02

Supposons que vous ayez montré des données sur une conduite dans un fichier de texte.Fichier TXT, et vous souhaitez transférer un nombre exact de caractères vers un autre fichier. Pour cela, vous utiliserez la fonction read () pour lire les données du fichier source, et la fonction d'écriture sera utilisée pour l'enregistrer dans le fichier de destination.

Maintenant, nous allons utiliser les mêmes en-têtes que nous avons utilisés dans l'exemple ci-dessus pour lire d'un fichier à une variable tampon. La méthode principale () de ce code est initialisée avec un tableau de taille de 40 caractères «arr."Les instructions de sortie printf () sont utilisées à chaque étape pour expliquer chaque et tout en détail, je.e., L'ouverture d'un fichier, lisant à partir d'un fichier, créant un autre fichier, copie des données du premier fichier au deuxième fichier, etc. Parallèlement à cela, nous avons utilisé la fonction Sleep () à l'initialisation de chaque étape de cet exemple de code. Après la première fonction Sleep (), nous avons utilisé la fonction Open () pour ouvrir notre fichier nommé «TextFile.txt ”dans un mode de lecture et enregistrer le résultat de retour dans le descripteur de fichier fd1.

Dans l'étape suivante, nous allons utiliser la fonction read () pour lire les données de TextFile.txt en utilisant son descripteur de fichier fd1. Vous devez noter une chose; Nous lisons uniquement les 30 caractères du fichier et les enregistrons dans le tableau des caractères «Arr.«Si la fonction read () fonctionne bien, il renverra un numéro de réussite à la variable entière« n."Dans la troisième étape, nous avons créé un autre fichier nommé" DEST.txt ”en utilisant à nouveau la fonction open ().

Deux options ont été fournies à la fonction ouverte à cette étape. Dans la dernière étape, nous lançons l'appel du système écrite () en le faisant passer le descripteur de fichier FD2, la variable «n» et le tableau de tampon «arr» pour copier les données du tampon «arr» au deuxième fichier à l'aide de F2.

#inclure
#inclure
#inclure
int main()
Char Arr [40];
printf ("ouverture de fichier de texte.txt en mode en lecture seule… \ n ");
sommeil (3);
int fd1 = ouvert ("TextFile.txt ", o_rdonly);
printf ("en lisant… \ n");
sommeil (3);
int n = read (fd1, arr, 30);
printf ("Création d'un autre fichier pour écrire dedans… \ n");
sommeil (3);
int fd2 = ouvert ("dest.txt ", o_creat | o_wronly, 0642);
printf ("Writing TextFile.Données txt à DEST.Fichier txt… \ n ");
sommeil (3);
écrire (fd2, arr, n);
printf ("\ n");

Sur cette exécution de code, le premier fichier a été ouvert et le tableau «Arr» a lu les données de l'informatique.

Le nouveau fichier a été créé en mode écriture.

Les données du tableau de caractères «Arr» sont transmises au deuxième fichier.

Les données de 30 caractères ont été copiées avec succès dans le DEST.Fichier TXT, comme affiché ci-dessous.

Conclusion

Dans ce guide, nous avons brièvement expliqué l'utilisation de l'appel du système read () dans le langage C. Pour cela, nous avons utilisé les tableaux tampons pour lire les données à partir d'un fichier spécifique et l'afficher sur la console. De plus, nous avons utilisé la fonction Read () et le tableau de tampon pour copier les données de texte d'un fichier à un autre.